MongoDB - Przewodnik na start
MongoDB to dokumentowa baza danych NoSQL zaprojektowana z myślą o elastyczności i skalowalności. Zamiast tabel i wierszy przechowuje dane w postaci dokumentów podobnych do JSON, dzięki czemu doskonale sprawdza się w aplikacjach o zmieniającej się strukturze danych. Ten serwer jest dostarczany z w pełni skonfigurowanym MongoDB 8.0 oraz hasłem administratora podanym podczas składania zamówienia. W zestawie znajduje się również mongo-express, który umożliwia zarządzanie bazą danych przez przeglądarkę internetową.
Krok 1 – Sprawdź, czy MongoDB działa
Adres IP serwera oraz hasło użytkownika root znajdziesz w sekcji Server Information na karcie Overview swojego serwera w panelu klienta. mongo-express to internetowy panel administracyjny dla MongoDB. Otwórz w przeglądarce http://your.server.ip/mongo-express, aby sprawdzić, czy działa.
Dane logowania administratora MongoDB:
- Nazwa użytkownika: admin
- Hasło: hasło administratora MongoDB podane podczas składania zamówienia
Za pomocą mongo-express możesz przeglądać bazy danych, wyświetlać i edytować dokumenty, wykonywać zapytania oraz zarządzać kolekcjami bez używania wiersza poleceń.
Serwery baz danych nie powinny być dostępne publicznie z Internetu. Dla bezpiecznego dostępu umieść serwer w sieci prywatnej za routerem VyOS i łącz się przez VPN, korzystając z prywatnego adresu IP serwera, aby uzyskać dostęp do MongoDB i mongo-express.
Krok 2 – Połącz się z MongoDB zdalnie
MongoDB jest skonfigurowane do przyjmowania zdalnych połączeń z uwierzytelnianiem. Możesz połączyć się z dowolnej aplikacji lub narzędzia:
mongosh „mongodb://admin:your_admin_password@your.server.ip:27017/admin”Parametry połączenia dla narzędzi z graficznym interfejsem (MongoDB Compass, Studio 3T itp.):
| Parametr | Wartość |
|---|---|
| Host | your.server.ip |
| Port | 27017 |
| Nazwa użytkownika | admin |
| Hasło | Hasło administratora (z zamówienia) |
| Baza uwierzytelniania | admin |
Format ciągu połączenia:
mongodb://admin:your_admin_password@your.server.ip:27017/adminUwaga: Port 27017 obsługuje protokół MongoDB, a nie HTTP, dlatego nie można go otworzyć w przeglądarce. Skorzystaj z klienta bazy danych lub z powyższego polecenia.
Krok 3 – Włącz SSL dla mongo-express (opcjonalnie)
Jeśli Twoja domena wskazuje na ten serwer, możesz włączyć HTTPS dla mongo-express za pomocą bezpłatnego certyfikatu Let’s Encrypt. Połącz się przez SSH i uruchom:
ssh root@your.server.ip /opt/setup/get-ssl.sh db.yourdomain.comSkrypt automatycznie zweryfikuje rekord DNS, pobierze certyfikat i skonfiguruje Apache do obsługi HTTPS. Po zakończeniu mongo-express będzie dostępny pod adresem https://db.yourdomain.com/mongo-express.
Uwaga: Przed uruchomieniem skryptu upewnij się, że rekord A domeny wskazuje na adres IP serwera. SSL jest opcjonalny. mongo-express działa również poprawnie przez HTTP przy dostępie z wykorzystaniem adresu IP.
Zarządzanie bazą danych
Tworzenie dodatkowych baz danych i użytkowników
Dodatkowe bazy danych i użytkowników możesz tworzyć za pomocą mongo-express lub przez SSH:
mongosh -u admin -p –authenticationDatabase admin use newdb db.createUser({ user: „newuser”, pwd: „strong_password”, roles: [{ role: „readWrite”, db: „newdb” }] })Import i eksport danych
Przez mongo-express: Korzystaj z interfejsu WWW do przeglądania i edytowania pojedynczych dokumentów.
Przez wiersz poleceń (zalecane przy większych operacjach):
# Eksport całej bazy danych mongodump -u admin -p your_admin_password –authenticationDatabase admin -d your_database -o /tmp/backup/ # Import bazy danych mongorestore -u admin -p your_admin_password –authenticationDatabase admin -d your_database /tmp/backup/your_database/ # Eksport pojedynczej kolekcji do JSON mongoexport -u admin -p your_admin_password –authenticationDatabase admin -d your_database -c your_collection -o collection.json # Import pliku JSON do kolekcji mongoimport -u admin -p your_admin_password –authenticationDatabase admin -d your_database -c your_collection –file collection.jsonPo instalacji
Fail2Ban – Ochrona przed atakami brute force
Serwer jest dostarczany z prekonfigurowanym Fail2Ban, który chroni zarówno SSH, jak i mongo-express przed atakami brute force.
| Reguła | Maksymalna liczba prób | Czas blokady |
|---|---|---|
| SSH | 5 nieudanych logowań | 10 minut |
| mongo-express | 5 nieudanych logowań | 1 godzina |
Przydatne polecenia:
# Sprawdź zablokowane adresy IP fail2ban-client status mongo-express fail2ban-client status sshd # Odblokowanie adresu IP fail2ban-client set mongo-express unbanip 1.2.3.4Jeśli przypadkowo zablokujesz sobie dostęp, połącz się z serwerem przez konsolę VNC w panelu klienta i odblokuj swój adres IP.
Zarządzanie usługami
MongoDB, mongo-express oraz Apache działają jako usługi systemd. Najczęściej używane polecenia:
# Sprawdź status usług systemctl status mongod systemctl status mongo-express systemctl status apache2 # Uruchom ponownie MongoDB systemctl restart mongod # Wyświetl logi MongoDB journalctl -u mongod -n 100Optymalizacja wydajności MongoDB
Pamięć podręczna WiredTiger jest automatycznie ustawiana na 50% dostępnej pamięci RAM podczas pierwszego uruchomienia serwera. Aby sprawdzić aktualną wartość:
mongosh -u admin -p –authenticationDatabase admin –eval „db.serverStatus().wiredTiger.cache”Aby zmienić ją ręcznie, edytuj plik /etc/mongod.conf (sekcja storage.wiredTiger.engineConfig.cacheSizeGB) i uruchom ponownie MongoDB:
systemctl restart mongodDane dostępowe do serwera
Dane logowania do MongoDB oraz mongo-express są zapisane w pliku /root/.mongo_credentials.
Co zostało wstępnie skonfigurowane
- Uwierzytelnianie: włączona autoryzacja MongoDB z wykorzystaniem SCRAM-SHA-256. Użytkownik administratora posiada uprawnienia root.
- Dostęp zdalny: MongoDB akceptuje połączenia z dowolnego adresu IP na porcie 27017.
- Pamięć podręczna WiredTiger: automatycznie dostosowywana do 50% dostępnej pamięci RAM podczas pierwszego uruchomienia.
- Interfejs WWW: mongo-express działa za serwerem Apache jako reverse proxy pod adresem /mongo-express.
Dołączone oprogramowanie
| Komponent | Wersja |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | w zestawie z MongoDB |
| mongo-express | Najnowsza wersja |
| Apache | 2.4 (reverse proxy) |
| Certbot | Najnowsza wersja |
| Fail2Ban | 1.0 |
Rozwiązywanie problemów
| Problem | Rozwiązanie |
|---|---|
| Nie można połączyć się z MongoDB zdalnie | Sprawdź, czy port 27017 nie jest blokowany przez zaporę sieciową. Upewnij się również, że użytkownik istnieje i korzysta z poprawnej bazy uwierzytelniania (authenticationDatabase). |
| mongo-express wyświetla błąd 401 Unauthorized | Użyj nazwy użytkownika admin oraz hasła administratora podanego podczas składania zamówienia. Dane logowania znajdują się w pliku /root/.mongo_credentials. |
| Strona mongo-express nie otwiera się | Sprawdź status usługi: systemctl status mongo-express. W razie potrzeby uruchom ją ponownie: systemctl restart mongo-express. |
| Błąd uwierzytelniania | Upewnij się, że używasz parametru –authenticationDatabase admin. Użytkownik administratora uwierzytelnia się względem bazy admin. |
| MongoDB nie uruchamia się | Sprawdź logi: journalctl -u mongod -n 50. Najczęstsze przyczyny to brak miejsca na dysku (df -h /) lub nieprawidłowa składnia YAML w pliku mongod.conf. |
| Zapomniane hasło administratora MongoDB | Połącz się przez SSH i sprawdź plik /root/.mongo_credentials. |
| Adres IP został zablokowany przez Fail2Ban | Skorzystaj z konsoli VNC w panelu klienta, aby odblokować swój adres IP. |
| Zapomniane hasło użytkownika root | Skorzystaj z konsoli VNC w panelu klienta, aby zresetować hasło. |