MongoDB - pradžios vadovas
MongoDB yra į dokumentus orientuota NoSQL duomenų bazė, sukurta lankstumui ir plečiamumui. Vietoj lentelių ir eilučių ji saugo duomenis kaip į JSON panašius dokumentus – idealu programoms su kintančia duomenų struktūra. Šiame serveryje MongoDB 8.0 visiškai sukonfigūruotas su administratoriaus slaptažodžiu, kurį nurodėte užsakydami. Duomenų bazėms valdyti per žiniatinklį įdiegtas mongo-express.
1 žingsnis – Patikrinkite, ar MongoDB veikia
Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. mongo-express yra žiniatinklio MongoDB administravimo sąsaja. Atidarykite http://your.server.ip/mongo-express naršyklėje ir patikrinkite, ar veikia.
MongoDB administratoriaus prisijungimas:
- Naudotojo vardas:
admin - Slaptažodis: MongoDB Admin Password, kurį įvedėte užsakydami
Su mongo-express galite naršyti duomenų bazes, peržiūrėti ir redaguoti dokumentus, vykdyti užklausas ir valdyti kolekcijas be komandinės eilutės.
Duomenų bazių serveriams vieša interneto prieiga nereikalinga. Saugiai prieigai patalpinkite serverį privačiame tinkle už VyOS maršrutizatoriaus ir prie MongoDB bei mongo-express junkitės per VPN privačiu serverio IP.
2 žingsnis – Nuotolinis prisijungimas prie MongoDB
MongoDB sukonfigūruotas priimti nuotolinius prisijungimus su autentifikavimu. Prisijungti galite iš bet kurios programos ar įrankio:
mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"
Prisijungimo duomenys grafiniams MongoDB įrankiams (MongoDB Compass, Studio 3T ir kt.):
| Parametras | Reikšmė |
|---|---|
| Mazgas | your.server.ip |
| Prievadas | 27017 |
| Naudotojo vardas | admin |
| Slaptažodis | Admin Password (iš užsakymo) |
| Auth Database | admin |
Prisijungimo eilutės formatas:
mongodb://admin:your_admin_password@your.server.ip:27017/admin
Pastaba: 27017 prievadas yra MongoDB protokolas, ne HTTP – naršyklėje jo atidaryti negalima. Naudokite duomenų bazės klientą arba aukščiau pateiktą komandą.
3 žingsnis – SSL įjungimas mongo-express (neprivaloma)
Jei į šį serverį nukreiptas jūsų domenas, mongo-express galite įjungti HTTPS su nemokamu Let’s Encrypt sertifikatu. Prisijunkite per SSH ir paleiskite:
ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com
Scenarijus patikrins DNS, gaus sertifikatą ir automatiškai sukonfigūruos Apache HTTPS. Baigus, mongo-express pasiekiamas adresu https://db.yourdomain.com/mongo-express.
Pastaba: Prieš paleisdami scenarijų įsitikinkite, kad jūsų domeno A įrašas nukreiptas į serverio IP. SSL neprivalomas – mongo-express puikiai veikia per HTTP pasiekiant IP adresu.
Duomenų bazių valdymas
Papildomų duomenų bazių ir naudotojų kūrimas
Papildomas duomenų bazes ir naudotojus galite sukurti per mongo-express arba SSH:
mongosh -u admin -p --authenticationDatabase admin
use newdb
db.createUser({
user: "newuser",
pwd: "strong_password",
roles: [{ role: "readWrite", db: "newdb" }]
})
Importas ir eksportas
Per mongo-express: Naudokite žiniatinklio sąsają atskiriems dokumentams peržiūrėti ir redaguoti.
Per komandinę eilutę (rekomenduojama masinėms operacijoms):
# 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 įdiegimo
Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų
Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH ir mongo-express nuo slaptažodžių spėjimo atakų.
| Taisyklė | Maks. bandymų | Blokavimo trukmė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 10 minučių |
| mongo-express | 5 nesėkmingi prisijungimai | 1 valanda |
Naudingos komandos:
# 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
Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.
Paslaugų valdymas
MongoDB, mongo-express ir Apache veikia per systemd. Dažnos komandos:
# 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
MongoDB našumo derinimas
WiredTiger podėlis per pirmąjį paleidimą automatiškai nustatomas į 50 % RAM. Dabartinę reikšmę patikrinsite taip:
mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"
Norėdami pakeisti rankiniu būdu, redaguokite /etc/mongod.conf (skiltyje storage.wiredTiger.engineConfig.cacheSizeGB) ir paleiskite MongoDB iš naujo:
systemctl restart mongod
Serverio prisijungimo duomenys
MongoDB ir mongo-express prisijungimo duomenys saugomi /root/.mongo_credentials.
Kas sukonfigūruota iš anksto
- Autentifikavimas: MongoDB autorizacija įjungta su SCRAM-SHA-256. Naudotojas admin turi root teises
- Nuotolinė prieiga: MongoDB priima prisijungimus iš bet kurio IP per 27017 prievadą
- WiredTiger podėlis: Per pirmąjį paleidimą automatiškai nustatomas į 50 % turimos RAM
- Žiniatinklio sąsaja: mongo-express veikia už Apache atvirkštinio tarpinio serverio adresu /mongo-express
Įdiegta programinė įranga
| Komponentas | Versija |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | įtrauktas su MongoDB |
| mongo-express | Naujausia |
| Apache | 2.4 (reverse proxy) |
| Certbot | Naujausia |
| Fail2Ban | 1.0 |
Trikčių šalinimas
| Problema | Sprendimas |
|---|---|
| Nepavyksta nuotoliniu būdu prisijungti prie MongoDB | Patikrinkite, ar ugniasienė neblokuoja 27017 prievado. Įsitikinkite, kad naudotojas egzistuoja ir turi teisingą authenticationDatabase |
| mongo-express rodo 401 Unauthorized | Naudokite naudotojo vardą admin ir Admin Password iš užsakymo. Prisijungimo duomenys yra /root/.mongo_credentials |
| mongo-express puslapis neįsikelia | Paslaugos patikra: systemctl status mongo-express. Paleidimas iš naujo: systemctl restart mongo-express |
| Autentifikavimas nepavyko | Būtinai nurodykite --authenticationDatabase admin. Naudotojas admin autentifikuojamas admin duomenų bazėje |
| MongoDB nepasileidžia | Žurnalų tikrinimas: journalctl -u mongod -n 50. Dažna priežastis: pilnas diskas (df -h /) arba netinkamas YAML faile mongod.conf |
| Pamiršote MongoDB administratoriaus slaptažodį | Prisijunkite per SSH ir patikrinkite /root/.mongo_credentials |
| Užblokavo Fail2Ban | Atblokuokite savo IP per VNC konsolę kliento skydelyje |
| Pamiršote root slaptažodį | Atkurkite jį per VNC konsolę kliento skydelyje |