Table of Contents

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ė
Mazgasyour.server.ip
Prievadas27017
Naudotojo vardasadmin
SlaptažodisAdmin Password (iš užsakymo)
Auth Databaseadmin

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ė
SSH5 nesėkmingi prisijungimai10 minučių
mongo-express5 nesėkmingi prisijungimai1 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
Ubuntu24.04 LTS
MongoDB8.0 Community
mongoshįtrauktas su MongoDB
mongo-expressNaujausia
Apache2.4 (reverse proxy)
CertbotNaujausia
Fail2Ban1.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