MongoDB - průvodce pro začátečníky
MongoDB je dokumentově orientovaná NoSQL databáze navržená pro flexibilitu a škálovatelnost. Místo tabulek a řádků ukládá data jako dokumenty podobné JSON – ideální pro aplikace s měnící se strukturou dat. Server obsahuje plně nakonfigurovaný MongoDB 8.0 s heslem administrátora, které jste zadali při objednávce. Pro správu databází přes web je k dispozici mongo-express.
Krok 1 – Ověřte, že MongoDB funguje
IP adresa a heslo root vašeho serveru jsou uvedeny na stránce Server Details v klientském panelu. mongo-express je webové administrační rozhraní pro MongoDB. Otevřete http://your.server.ip/mongo-express v prohlížeči a ověřte, že funguje.
Přihlášení administrátora MongoDB:
- Uživatelské jméno:
admin - Heslo: MongoDB Admin Password, které jste zadali při objednávce
V mongo-express můžete procházet databáze, zobrazovat a upravovat dokumenty, spouštět dotazy a spravovat kolekce bez příkazového řádku.
Databázové servery nepotřebují veřejný přístup z internetu. Pro bezpečný přístup umístěte server do privátní sítě za router VyOS a k MongoDB a mongo-express se připojujte přes VPN na privátní IP serveru.
Krok 2 – Vzdálené připojení k MongoDB
MongoDB je nakonfigurován k přijímání vzdálených připojení s ověřováním. Připojit se můžete z libovolné aplikace nebo nástroje:
mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"
Údaje pro připojení z grafických nástrojů MongoDB (MongoDB Compass, Studio 3T atd.):
| Parametr | Hodnota |
|---|---|
| Hostitel | your.server.ip |
| Port | 27017 |
| Uživatelské jméno | admin |
| Heslo | Admin Password (z objednávky) |
| Auth Database | admin |
Formát připojovacího řetězce:
mongodb://admin:your_admin_password@your.server.ip:27017/admin
Poznámka: Port 27017 je protokol MongoDB, ne HTTP – v prohlížeči ho otevřít nelze. Použijte databázového klienta nebo příkaz výše.
Krok 3 – Zapnutí SSL pro mongo-express (volitelné)
Pokud na tento server směřuje vaše doména, můžete pro mongo-express zapnout HTTPS s bezplatným certifikátem Let’s Encrypt. Připojte se přes SSH a spusťte:
ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com
Skript ověří DNS, získá certifikát a automaticky nastaví Apache pro HTTPS. Po dokončení je mongo-express dostupný na https://db.yourdomain.com/mongo-express.
Poznámka: Před spuštěním skriptu se ujistěte, že A záznam vaší domény směřuje na IP serveru. SSL je volitelné – mongo-express funguje bez problémů přes HTTP s přístupem přes IP adresu.
Správa databází
Vytváření dalších databází a uživatelů
Další databáze a uživatele můžete vytvořit přes mongo-express nebo SSH:
mongosh -u admin -p --authenticationDatabase admin
use newdb
db.createUser({
user: "newuser",
pwd: "strong_password",
roles: [{ role: "readWrite", db: "newdb" }]
})
Import a export
Přes mongo-express: Webové rozhraní použijte k zobrazení a úpravě jednotlivých dokumentů.
Přes příkazový řádek (doporučeno pro hromadné operace):
# Export entire database
mongodump -u admin -p your_admin_password --authenticationDatabase admin -d your_database -o /tmp/backup/
# Import database
mongorestore -u admin -p your_admin_password --authenticationDatabase admin -d your_database /tmp/backup/your_database/
# Export single collection to JSON
mongoexport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection -o collection.json
# Import JSON into collection
mongoimport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection --file collection.json
Po instalaci
Fail2Ban – ochrana proti útokům hrubou silou
Váš server obsahuje Fail2Ban předkonfigurovaný k ochraně SSH i mongo-express proti útokům hrubou silou.
| Pravidlo | Max. počet pokusů | Doba blokace |
|---|---|---|
| SSH | 5 neúspěšných přihlášení | 10 minut |
| mongo-express | 5 neúspěšných přihlášení | 1 hodina |
Užitečné příkazy:
# Check banned IPs
fail2ban-client status mongo-express
fail2ban-client status sshd
# Unban an IP
fail2ban-client set mongo-express unbanip 1.2.3.4
Pokud se omylem zablokujete, připojte se přes konzoli VNC v klientském panelu a odblokujte svou IP.
Správa služeb
MongoDB, mongo-express a Apache běží přes systemd. Běžné příkazy:
# Check service status
systemctl status mongod
systemctl status mongo-express
systemctl status apache2
# Restart MongoDB
systemctl restart mongod
# View MongoDB logs
journalctl -u mongod -n 100
Ladění výkonu MongoDB
Cache WiredTiger se při prvním startu automaticky nastaví na 50 % RAM. Aktuální hodnotu zjistíte takto:
mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"
Pro ruční úpravu upravte /etc/mongod.conf (v sekci storage.wiredTiger.engineConfig.cacheSizeGB) a restartujte MongoDB:
systemctl restart mongod
Přihlašovací údaje serveru
Přihlašovací údaje MongoDB a mongo-express jsou uloženy v /root/.mongo_credentials.
Co je předkonfigurováno
- Ověřování: Autorizace MongoDB zapnutá se SCRAM-SHA-256. Uživatel admin má oprávnění root
- Vzdálený přístup: MongoDB přijímá připojení z libovolné IP na portu 27017
- Cache WiredTiger: Automaticky nastavena na 50 % dostupné RAM při prvním startu
- Webové rozhraní: mongo-express běží za reverzní proxy Apache na /mongo-express
Zahrnutý software
| Komponenta | Verze |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | součástí MongoDB |
| mongo-express | Nejnovější |
| Apache | 2.4 (reverse proxy) |
| Certbot | Nejnovější |
| Fail2Ban | 1.0 |
Řešení problémů
| Problém | Řešení |
|---|---|
| Nelze se vzdáleně připojit k MongoDB | Zkontrolujte, že port 27017 neblokuje firewall. Ověřte, že uživatel existuje a má správnou authenticationDatabase |
| mongo-express hlásí 401 Unauthorized | Použijte uživatelské jméno admin a Admin Password z objednávky. Přihlašovací údaje jsou v /root/.mongo_credentials |
| Stránka mongo-express se nenačte | Kontrola služby: systemctl status mongo-express. Restart: systemctl restart mongo-express |
| Ověření selhalo | Nezapomeňte zadat --authenticationDatabase admin. Uživatel admin se ověřuje vůči databázi admin |
| MongoDB se nespustí | Kontrola logů: journalctl -u mongod -n 50. Častá příčina: plný disk (df -h /) nebo neplatný YAML v mongod.conf |
| Zapomenuté heslo administrátora MongoDB | Připojte se přes SSH a zkontrolujte /root/.mongo_credentials |
| Blokováno službou Fail2Ban | Odblokujte svou IP přes konzoli VNC v klientském panelu |
| Zapomenuté heslo root | Obnovte jej přes konzoli VNC v klientském panelu |