MongoDB - ghid de inițiere
MongoDB este o bază de date NoSQL orientată pe documente, concepută pentru flexibilitate și scalabilitate. În loc de tabele și rânduri, stochează datele ca documente asemănătoare JSON – ideal pentru aplicații cu structuri de date în evoluție. Serverul vine cu MongoDB 8.0 complet configurat, cu parola de administrator specificată la comandă. mongo-express este inclus pentru administrarea bazelor de date prin web.
Pasul 1 – Verificați funcționarea MongoDB
Adresa IP și parola root a serverului sunt afișate pe pagina Server Details din panoul clientului. mongo-express este o interfață web de administrare pentru MongoDB. Deschideți http://your.server.ip/mongo-express în browser pentru a verifica funcționarea.
Autentificare administrator MongoDB:
- Nume de utilizator:
admin - Parolă: MongoDB Admin Password introdusă la comandă
Cu mongo-express puteți naviga prin baze de date, vizualiza și edita documente, rula interogări și administra colecții fără linie de comandă.
Serverele de baze de date nu au nevoie de acces public la internet. Pentru acces securizat, plasați serverul într-o rețea privată în spatele unui router VyOS și conectați-vă prin VPN la MongoDB și mongo-express pe IP-ul privat al serverului.
Pasul 2 – Conectarea la distanță la MongoDB
MongoDB este configurat să accepte conexiuni la distanță cu autentificare. Vă puteți conecta din orice aplicație sau instrument:
mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"
Date de conectare pentru instrumentele grafice MongoDB (MongoDB Compass, Studio 3T etc.):
| Parametru | Valoare |
|---|---|
| Gazdă | your.server.ip |
| Port | 27017 |
| Nume de utilizator | admin |
| Parolă | Admin Password (din comandă) |
| Auth Database | admin |
Formatul șirului de conectare:
mongodb://admin:your_admin_password@your.server.ip:27017/admin
Notă: Portul 27017 este protocolul MongoDB, nu HTTP – nu poate fi deschis în browser. Folosiți un client de baze de date sau comanda de mai sus.
Pasul 3 – Activarea SSL pentru mongo-express (opțional)
Dacă aveți un domeniu care indică acest server, puteți activa HTTPS pentru mongo-express cu un certificat gratuit Let’s Encrypt. Conectați-vă prin SSH și rulați:
ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com
Scriptul va verifica DNS-ul, va obține un certificat și va configura automat Apache pentru HTTPS. După finalizare, mongo-express este disponibil la https://db.yourdomain.com/mongo-express.
Notă: Asigurați-vă că înregistrarea A a domeniului indică IP-ul serverului înainte de a rula scriptul. SSL este opțional – mongo-express funcționează bine prin HTTP cu acces pe adresa IP.
Administrarea bazelor de date
Crearea bazelor de date și utilizatorilor suplimentari
Puteți crea baze de date și utilizatori suplimentari prin mongo-express sau SSH:
mongosh -u admin -p --authenticationDatabase admin
use newdb
db.createUser({
user: "newuser",
pwd: "strong_password",
roles: [{ role: "readWrite", db: "newdb" }]
})
Import și export
Prin mongo-express: Folosiți interfața web pentru a vizualiza și edita documente individuale.
Prin linia de comandă (recomandat pentru operațiuni în masă):
# 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
După instalare
Fail2Ban – protecție împotriva atacurilor brute-force
Serverul dumneavoastră include Fail2Ban preconfigurat pentru a proteja atât SSH, cât și mongo-express împotriva atacurilor brute-force.
| Regulă | Încercări maxime | Durata blocării |
|---|---|---|
| SSH | 5 autentificări eșuate | 10 minute |
| mongo-express | 5 autentificări eșuate | 1 oră |
Comenzi utile:
# 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
Dacă vă blocați accidental, conectați-vă prin consola VNC din panoul clientului și deblocați-vă IP-ul.
Administrarea serviciilor
MongoDB, mongo-express și Apache rulează prin systemd. Comenzi uzuale:
# 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
Optimizarea performanței MongoDB
Cache-ul WiredTiger este setat automat la 50% din RAM la prima pornire. Pentru a verifica valoarea curentă:
mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"
Pentru ajustare manuală, editați /etc/mongod.conf (în secțiunea storage.wiredTiger.engineConfig.cacheSizeGB) și reporniți MongoDB:
systemctl restart mongod
Datele de acces la server
Datele de acces MongoDB și mongo-express sunt stocate în /root/.mongo_credentials.
Ce este preconfigurat
- Autentificare: Autorizarea MongoDB este activată cu SCRAM-SHA-256. Utilizatorul admin are privilegii root
- Acces la distanță: MongoDB acceptă conexiuni de la orice IP pe portul 27017
- Cache WiredTiger: Ajustat automat la 50% din RAM-ul disponibil la prima pornire
- Interfață web: mongo-express rulează în spatele proxy-ului invers Apache la /mongo-express
Software inclus
| Componentă | Versiune |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | inclus cu MongoDB |
| mongo-express | Cea mai recentă |
| Apache | 2.4 (reverse proxy) |
| Certbot | Cea mai recentă |
| Fail2Ban | 1.0 |
Depanare
| Problemă | Soluție |
|---|---|
| Nu se poate conecta la MongoDB de la distanță | Verificați că portul 27017 nu este blocat de firewall. Verificați că utilizatorul există și are authenticationDatabase corectă |
| mongo-express afișează 401 Unauthorized | Folosiți numele de utilizator admin și Admin Password din comandă. Datele de acces se află în /root/.mongo_credentials |
| Pagina mongo-express nu se încarcă | Verificarea serviciului: systemctl status mongo-express. Repornire: systemctl restart mongo-express |
| Autentificarea a eșuat | Asigurați-vă că specificați --authenticationDatabase admin. Utilizatorul admin se autentifică în baza de date admin |
| MongoDB nu pornește | Verificarea logurilor: journalctl -u mongod -n 50. Cauză frecventă: disc plin (df -h /) sau YAML invalid în mongod.conf |
| Ați uitat parola de administrator MongoDB | Conectați-vă prin SSH și verificați /root/.mongo_credentials |
| Blocat de Fail2Ban | Deblocați-vă IP-ul prin consola VNC din panoul clientului |
| Ați uitat parola root | Resetați-o prin consola VNC din panoul clientului |