Chcę skonfigurować uwierzytelnianie nazwy użytkownika i hasła dla mojej instancji MongoDB, aby każdy zdalny dostęp poprosił o podanie nazwy użytkownika i hasła. Wypróbowałem samouczek ze strony MongoDB i wykonałem następujące czynności:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Potem wyszedłem i znów poprowadziłem mongo. I nie potrzebuję hasła, aby uzyskać do niego dostęp. Nawet jeśli zdalnie połączę się z bazą danych, nie pojawi się monit o podanie nazwy użytkownika i hasła.
AKTUALIZACJA Oto rozwiązanie, z którego ostatecznie skorzystałem
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
Nazwa użytkownika i hasło będą działać w ten sam sposób dla mongodump
i mongoexport
.
authentication
mongodb
murvinlai
źródło
źródło
Odpowiedzi:
Musisz zacząć
mongod
od--auth
opcji po skonfigurowaniu użytkownika.Ze strony MongoDB:
Uwierzytelnianie MongoDB
źródło
admin
bazą danych, użyj innej bazy danych i spróbuj ponownie. Tylko użytkownik UserAdmin (AnyDatabase) może się połączyćadmin
.Wow, tutaj jest tyle skomplikowanych / mylących odpowiedzi.
To jest od wersji 3.4 .
Krótka odpowiedź.
1) Uruchom MongoDB bez kontroli dostępu.
2) Połącz się z instancją.
3) Utwórz użytkownika.
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie z kontrolą dostępu.
5) Połącz się i uwierzytelnij jako użytkownik.
Długa odpowiedź: przeczytaj to, jeśli chcesz poprawnie zrozumieć.
To jest naprawdę proste. Omówię poniższe https://docs.mongodb.com/manual/tutorial/enable-authentication/
Jeśli chcesz dowiedzieć się więcej o tym, czym właściwie są role, przeczytaj więcej tutaj: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Uruchom MongoDB bez kontroli dostępu.
2) Połącz się z instancją.
3) Utwórz administratora użytkownika. Poniżej utworzono administratora użytkownika w
admin
bazie danych uwierzytelniania. Użytkownik jestdbOwner
ponadsome_db
bazą danych, a NIE ponadadmin
bazą danych, o czym należy pamiętać.Lub jeśli chcesz utworzyć administratora, który jest administratorem w dowolnej bazie danych:
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie z kontrolą dostępu.
5) Połącz się i uwierzytelnij jako administrator użytkownika względem
admin
bazy danych uwierzytelniania, a NIE względemsome_db
bazy danych uwierzytelniania. Administrator użytkownika został utworzony wadmin
bazie danych uwierzytelniania, użytkownik nie istnieje wsome_db
bazie danych uwierzytelniania.Jesteś teraz uwierzytelnione jako
dbOwner
nadsome_db
bazą danych. Więc teraz, jeśli chcesz czytać / pisać / robić rzeczy bezpośrednio wsome_db
bazie danych, możesz na nią przejść.Więcej na temat ról: https://docs.mongodb.com/manual/reference/built-in-roles/
Jeśli chcesz utworzyć dodatkowych użytkowników, którzy nie są administratorami użytkowników i którzy są zwykłymi użytkownikami, czytaj dalej.
6) Utwórz normalnego użytkownika. Ten użytkownik zostanie utworzony w
some_db
bazie danych uwierzytelniania poniżej.7) Wyjdź z powłoki mongo, podłącz ponownie, uwierzytelnij się jako użytkownik.
źródło
Najpierw usuń komentarz z linii zaczynającej się
#auth=true
w pliku konfiguracyjnym mongod (domyślna ścieżka/etc/mongo.conf
). Umożliwi to uwierzytelnianie dla mongodb.Następnie uruchom ponownie mongodb:
sudo service mongod restart
źródło
/etc/mongod.conf
nie/etc/mongo.conf
Ta odpowiedź dotyczy podręcznika Mongo 3.2.1
Terminal 1:
Terminal 2:
jeśli chcesz dodać bez ról (opcjonalnie):
aby sprawdzić, czy jest uwierzytelniony czy nie:
powinno dać ci:
inaczej:
źródło
use admin
wcześniej, wcreateUser
przeciwnym razie wystąpił błąd.Oto kod javascript, aby dodać użytkowników.
Zacznij
mongod
od--auth = true
Uzyskaj dostęp do bazy danych administratora z powłoki mongo i przekaż plik javascript.
mongo admin „Filename.js”
„Nazwa pliku.js”
Po dodaniu użytkownika możemy zweryfikować dostęp do bazy danych z powłoki mongo
źródło
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Edytuj plik ustawień mongo;
Dodaj linię:
Uruchom ponownie usługę
pozdrowienia
źródło
Najpierw uruchom mongoDB na terminalu, używając
teraz uruchom powłokę mongo, użyj następujących poleceń
Uruchom ponownie instancję MongoDB z kontrolą dostępu.
Teraz uwierzytelnij się przy użyciu wiersza polecenia
Przeczytałem to z
https://docs.mongodb.com/manual/tutorial/enable-authentication/
źródło
MongoDB Enterprise > db.system.users.find() { "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SC RAM-SHA-1" : { "iterationCount" : 10000, "salt" : "k96PCEflidMY5seVju+gAw==", "s toredKey" : "CabQTnJtny7cv0wT5X8oX9QOn3A=", "serverKey" : "RJyCdnlIhyIfj2+d44L61 bYK+MU=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "dbAdmin", "db" : "admin" }, { "role" : "userAdmin", "db" : "admin" }, { "role" : "root", "db" : "admin" } ] }
root
roli, aby zapewnić dostęp do operacji i wszystkich zasobów następujących ról łącznie ... rola rootOto, co zrobiłem na Ubuntu 18.04:
źródło
Mógłbyś się zmienić
/etc/mongod.conf
.Przed
#security:
Po
Następnie
sudo service mongod restart
źródło
Wykonaj kolejno poniższe kroki
mongod --auth
w przypadku Linuksa możesz edytować/etc/mongod.conf
plik, aby dodaćsecurity.authorization : enabled
a następnie ponownie uruchomić usługę mongdmongo -u "admin" -p "admin123" --authenticationDatabase "admin"
. Otóż toMożesz sprawdzić ten post, aby uzyskać więcej informacji i nauczyć się łączenia z nim za pomocą mangusty.
źródło
Tworzenie użytkownika z hasłem do określonej bazy danych w celu zabezpieczenia dostępu do bazy danych:
źródło
Musisz przełączyć się na bazę danych, na której chcesz używać użytkownika (nie administratora db) ...
use mydatabase
Zobacz ten post, aby uzyskać dodatkową pomoc ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
źródło
Te kroki działały na mnie:
źródło
Najlepsza praktyka łączenia się z mongoDB w następujący sposób:
Po pierwszej instalacji
use admin
Następnie uruchom następujący skrypt, aby utworzyć użytkownika administratora
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
poniższy skrypt utworzy użytkownika administratora dla bazy danych.
zaloguj się do db.admin za pomocą
mongo -u YourUserName -p YourPassword admin
Po zalogowaniu możesz utworzyć numer N bazy danych z tym samym poświadczeniem administratora lub innym, powtarzając 1 do 3.
Dzięki temu możesz utworzyć innego użytkownika i hasło dla innej kolekcji, którą tworzysz w MongoDB
źródło
po utworzeniu nowego użytkownika nie zapomnij o
grant
read/write/root
pozwoleniu dla użytkownika. możesz spróbowaćcmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
źródło