Jak zabezpieczyć MongoDB nazwą użytkownika i hasłem
Chcę skonfigurować uwierzytelnianie nazwy użytkownika i hasła dla mojej instancji MongoDB, tak aby każdy zdalny dostęp pytał o nazwę użytkownika i hasło. Wypróbowałem samouczek ze strony MongoDB i zrobiłem:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Po tym, wyszedłem i ponownie uruchomiłem mongo. I nie potrzebuję hasła, żeby się do niego dostać. Nawet jeśli połączę się zdalnie z bazą danych, nie pojawi się monit o nazwę użytkownika i hasło.
UPDATE Oto rozwiązanie, które znalazłem using
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
.
12 answers
Musisz uruchomić {[0] } z opcją --auth
Po skonfigurowaniu użytkownika.
Ze strony MongoDB:
Uruchom bazę danych (proces mongod) z opcją
--auth
, aby włączyć Ochrona. Musisz albo dodać użytkownika do db admin przed uruchomienie serwera z--auth
, lub dodanie pierwszego użytkownika z interfejs localhost.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-10 18:57:07
Najpierw Usuń komentarz linii zaczynającej się od #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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-26 10:35:57
Ta odpowiedź jest dla Mongo 3.2.1 odniesienie
Terminal 1:
$ mongod --auth
Terminal 2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
Jeśli chcesz dodać bez ról (opcjonalnie):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
Aby sprawdzić, czy uwierzytelnione czy nie:
db.auth("admin_name", "1234")
Powinno dać:
1
Else:
Error: Authentication failed.
0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-10 01:14:38
Wow tyle skomplikowanych / mylących odpowiedzi tutaj.
To jest od v3.4 .
Krótka odpowiedź.
1) Uruchom MongoDB bez kontroli dostępu.
mongod --dbpath /data/db
2) Połącz się z instancją.
mongo
3) Utwórz użytkownika.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie za pomocą kontroli dostępu.
mongod --auth --dbpath /data/db
5) Połącz się i Uwierzytelnij jako użytkownik.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Długa odpowiedź: przeczytaj to, jeśli chcesz prawidłowo Rozumiem.
To naprawdę proste. I ' ll dumb the following down https://docs.mongodb.com/manual/tutorial/enable-authentication/jeśli chcesz dowiedzieć się więcej o rolach, przeczytaj więcej tutaj: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Uruchom MongoDB bez kontroli dostępu.
mongod --dbpath /data/db
2) Połącz się z instancją.
mongo
3) Utwórz administratora użytkownika. następujące tworzy administratora użytkownika w bazie danych uwierzytelniania admin
. Użytkownik jest dbOwner
nad bazą danych some_db
, A nie nad bazą danych admin
, jest to ważne do zapamiętania.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Jeśli chcesz utworzyć admina, który będzie adminem nad dowolną bazą danych:]}
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Zatrzymaj instancję MongoDB i uruchom ją ponownie za pomocą kontroli dostępu.
mongod --auth --dbpath /data/db
5) Połącz się i Uwierzytelnij jako administrator użytkownika w bazie danych uwierzytelniania admin
, a nie w some_db
baza danych uwierzytelniania. użytkownik administrator został utworzony w bazie uwierzytelniania admin
, użytkownik nie istnieje w bazie uwierzytelniania some_db
.
use admin
db.auth("myDbOwner", "abc123")
jesteś teraz uwierzytelniony jako dbOwner
w bazie danych some_db
. Więc teraz, jeśli chcesz czytać/pisać / robić rzeczy bezpośrednio do bazy some_db
, możesz ją zmienić.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Więcej o rolach: https://docs.mongodb.com/manual/reference/built-in-roles/
jeśli chcesz dodać dodatkowych użytkowników, którzy nie są administratorami użytkowników, a którzy są tylko zwykłymi użytkownikami Czytaj dalej poniżej.
6) Utwórz normalnego użytkownika. ten użytkownik zostanie utworzony w bazie danych uwierzytelniania some_db
poniżej.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Wyjdź z powłoki mongo, ponownie połącz się, Uwierzytelnij jako użytkownik.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-31 09:33:02
Oto kod javascript do dodawania użytkowników.
Start
mongod
z--auth = true
-
Uzyskaj dostęp do bazy danych Administratora z powłoki mongo i przekaż plik javascript.
Mongo admin " nazwa pliku.js "
" Nazwa pliku.js "
// Adding admin user db.addUser("admin_username", " admin_password"); // Authenticate admin user db.auth("admin_username ", " admin_password "); // use database code from java script db = db.getSiblingDB("newDatabase"); // Adding newDatabase database user db.addUser("database_username ", " database_ password ");
-
Teraz dodanie użytkownika jest zakończone, możemy zweryfikować dostęp do bazy danych z powłoki mongo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-23 00:10:01
Https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Edytuj plik ustawień mongo;
sudo nano /etc/mongod.conf
Dodaj wiersz:
security.authorization : enabled
Uruchom ponownie usługę
sudo service mongod restart
Pozdrawiam
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-23 11:33:26
Najpierw uruchom mongoDB na terminalu używając
mongod
Teraz uruchom powłokę mongo użyj następujących poleceń
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Uruchom ponownie instancję MongoDB z kontrolą dostępu.
mongod --auth
Teraz Uwierzytelnij się z linii poleceń za pomocą
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Przeczytałem z
Https://docs.mongodb.com/manual/tutorial/enable-authentication/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 19:19:35
Musisz przełączyć się do bazy danych, w której ma być umieszczony użytkownik (nie administrator db) ...
use mydatabase
Zobacz ten post, aby uzyskać więcej pomocy ... http://learnmongo.com/posts/quick-tip-mongodb-users/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 21:29:38
Utworzenie użytkownika z hasłem do określonej bazy danych w celu zabezpieczenia dostępu do bazy danych:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 11:55:04
Te kroki zadziałały na mnie:
- Zapisz mongod --port 27017 na cmd
- następnie podłącz do powłoki mongo: mongo --port 27017
- Utwórz użytkownika admin : użyj admina db.createUser( { użytkownik: "myUserAdmin", "abc123", roles: [{role: "userAdminAnyDatabase", db: "admin" } ] } )
- Odłącz muszlę mongo
- Uruchom ponownie mongodb: mongod --auth --port 27017
- start Mongo shell : mongo --port 27017-u "myUserAdmin" - p "abc123" --authenticationDatabase "admin"
- aby uwierzytelnić po podłączeniu, podłącz powłokę mongo do mongod: mongo -- port 27017
- Przełącz do bazy danych uwierzytelniania : użyj admina db.auth ("myUserAdmin"," abc123 "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 08:58:03
Po utworzeniu nowego użytkownika, nie zapomnij grant
read/write/root
uprawnienia dla użytkownika. możesz spróbować
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 09:05:23
Najlepsza praktyka łączenia się z mongoDB w następujący sposób:
-
Po wstępnej instalacji,
use admin
-
Następnie uruchom następujący skrypt, aby utworzyć użytkownika admin
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
Następujący skrypt utworzy użytkownika admin dla DB.
-
Zaloguj się do db.admin using
mongo -u YourUserName -p YourPassword admin
Po zalogowaniu można utworzyć N numer bazy danych z tym samym poświadczeniem administratora lub innym powtarzając od 1 do 3.
Pozwala to na utworzenie różnych użytkowników i haseł dla różnych kolekcji, które tworzysz w MongoDB
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-22 08:29:58