MongoDB - príručka pre začiatočníkov
MongoDB je dokumentovo orientovaná NoSQL databáza navrhnutá pre flexibilitu a škálovateľnosť. Namiesto tabuliek a riadkov ukladá dáta ako dokumenty podobné JSON – ideálne pre aplikácie s meniacou sa štruktúrou dát. Server obsahuje plne nakonfigurovaný MongoDB 8.0 s heslom administrátora, ktoré ste zadali pri objednávke. Na správu databáz cez web je k dispozícii mongo-express.
Krok 1 – Overte, že MongoDB funguje
IP adresa a heslo root vášho servera sú uvedené na stránke Server Details v klientskom paneli. mongo-express je webové administračné rozhranie pre MongoDB. Otvorte http://your.server.ip/mongo-express v prehliadači a overte, že funguje.
Prihlásenie administrátora MongoDB:
- Používateľské meno:
admin - Heslo: MongoDB Admin Password, ktoré ste zadali pri objednávke
V mongo-express môžete prechádzať databázy, zobrazovať a upravovať dokumenty, spúšťať dopyty a spravovať kolekcie bez príkazového riadka.
Databázové servery nepotrebujú verejný prístup z internetu. Na bezpečný prístup umiestnite server do privátnej siete za router VyOS a k MongoDB a mongo-express sa pripájajte cez VPN na privátnu IP servera.
Krok 2 – Vzdialené pripojenie k MongoDB
MongoDB je nakonfigurovaný na prijímanie vzdialených pripojení s overovaním. Pripojiť sa môžete z ľubovoľnej aplikácie alebo nástroja:
mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"
Údaje na pripojenie z grafických nástrojov MongoDB (MongoDB Compass, Studio 3T atď.):
| Parameter | Hodnota |
|---|---|
| Hostiteľ | your.server.ip |
| Port | 27017 |
| Používateľské meno | admin |
| Heslo | Admin Password (z objednávky) |
| Auth Database | admin |
Formát pripojovacieho reťazca:
mongodb://admin:your_admin_password@your.server.ip:27017/admin
Poznámka: Port 27017 je protokol MongoDB, nie HTTP – v prehliadači ho otvoriť nemožno. Použite databázového klienta alebo príkaz vyššie.
Krok 3 – Zapnutie SSL pre mongo-express (voliteľné)
Ak na tento server smeruje vaša doména, môžete pre mongo-express zapnúť HTTPS s bezplatným certifikátom Let’s Encrypt. Pripojte sa cez SSH a spustite:
ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com
Skript overí DNS, získa certifikát a automaticky nastaví Apache pre HTTPS. Po dokončení je mongo-express dostupný na https://db.yourdomain.com/mongo-express.
Poznámka: Pred spustením skriptu sa uistite, že A záznam vašej domény smeruje na IP servera. SSL je voliteľné – mongo-express funguje bez problémov cez HTTP s prístupom cez IP adresu.
Správa databáz
Vytváranie ďalších databáz a používateľov
Ďalšie databázy a používateľov môžete vytvoriť cez mongo-express alebo SSH:
mongosh -u admin -p --authenticationDatabase admin
use newdb
db.createUser({
user: "newuser",
pwd: "strong_password",
roles: [{ role: "readWrite", db: "newdb" }]
})
Import a export
Cez mongo-express: Webové rozhranie použite na zobrazenie a úpravu jednotlivých dokumentov.
Cez príkazový riadok (odporúčané pre hromadné operácie):
# 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 inštalácii
Fail2Ban – ochrana proti útokom hrubou silou
Váš server obsahuje Fail2Ban predkonfigurovaný na ochranu SSH aj mongo-express proti útokom hrubou silou.
| Pravidlo | Max. počet pokusov | Doba blokovania |
|---|---|---|
| SSH | 5 neúspešných prihlásení | 10 minút |
| mongo-express | 5 neúspešných prihlásení | 1 hodina |
Užitočné prí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
Ak sa omylom zablokujete, pripojte sa cez konzolu VNC v klientskom paneli a odblokujte svoju IP.
Správa služieb
MongoDB, mongo-express a Apache bežia cez systemd. Bežné prí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
Ladenie výkonu MongoDB
Cache WiredTiger sa pri prvom štarte automaticky nastaví na 50 % RAM. Aktuálnu hodnotu zistíte takto:
mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"
Na ručnú úpravu upravte /etc/mongod.conf (v sekcii storage.wiredTiger.engineConfig.cacheSizeGB) a reštartujte MongoDB:
systemctl restart mongod
Prihlasovacie údaje servera
Prihlasovacie údaje MongoDB a mongo-express sú uložené v /root/.mongo_credentials.
Čo je predkonfigurované
- Overovanie: Autorizácia MongoDB zapnutá so SCRAM-SHA-256. Používateľ admin má oprávnenia root
- Vzdialený prístup: MongoDB prijíma pripojenia z ľubovoľnej IP na porte 27017
- Cache WiredTiger: Automaticky nastavená na 50 % dostupnej RAM pri prvom štarte
- Webové rozhranie: mongo-express beží za reverznou proxy Apache na /mongo-express
Zahrnutý softvér
| Komponent | Verzia |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | súčasť MongoDB |
| mongo-express | Najnovšia |
| Apache | 2.4 (reverse proxy) |
| Certbot | Najnovšia |
| Fail2Ban | 1.0 |
Riešenie problémov
| Problém | Riešenie |
|---|---|
| Nedá sa vzdialene pripojiť k MongoDB | Skontrolujte, či port 27017 neblokuje firewall. Overte, že používateľ existuje a má správnu authenticationDatabase |
| mongo-express hlási 401 Unauthorized | Použite používateľské meno admin a Admin Password z objednávky. Prihlasovacie údaje sú v /root/.mongo_credentials |
| Stránka mongo-express sa nenačíta | Kontrola služby: systemctl status mongo-express. Reštart: systemctl restart mongo-express |
| Overenie zlyhalo | Nezabudnite zadať --authenticationDatabase admin. Používateľ admin sa overuje voči databáze admin |
| MongoDB sa nespustí | Kontrola logov: journalctl -u mongod -n 50. Častá príčina: plný disk (df -h /) alebo neplatný YAML v mongod.conf |
| Zabudnuté heslo administrátora MongoDB | Pripojte sa cez SSH a skontrolujte /root/.mongo_credentials |
| Zablokované službou Fail2Ban | Odblokujte svoju IP cez konzolu VNC v klientskom paneli |
| Zabudnuté heslo root | Obnovte ho cez konzolu VNC v klientskom paneli |