MongoDB-admin user no authorized
Próbuję dodać autoryzację do mojego MongoDB.
Wszystko to robię na Linuksie z MongoDB 2.6.1.
Mój mongod.plik conf jest w starym formacie kompatybilności
(tak to się stało z instalacją).
1) utworzyłem użytkownika admin, jak opisano tutaj w (3)
Http://docs.mongodb.org/manual/tutorial/add-user-administrator/
2) potem edytowałem mongod.conf by commenting this line
auth = true
3) W końcu zrestartowałem serwis mongod i próbowałem się zalogować:
/usr/bin/mongo localhost:27017/admin -u sa -p pwd
4) mogę się połączyć, ale mówi to po podłączeniu.
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
5) teraz wygląda na to, że ten sa
użytkownik, który stworzyłem, nie ma żadnych uprawnień.
root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
"$err" : "not authorized for query on admin.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>
W czym problem? Powtórzyłem ten cały zabieg 3 razy i
Myślę, że zrobiłem to wszystko zgodnie z dokumentami MongoDB. Ale to nie działa.
Spodziewałem się, że ten użytkownik sa
będzie upoważniony do robienia czegokolwiek, aby
może wtedy tworzyć innych użytkowników i daj im bardziej konkretne uprawnienia.
9 answers
Ja również drapałem się po głowie wokół tego samego problemu, i wszystko działało po ustawieniu roli jako root podczas dodawania pierwszego użytkownika admin.
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
}
);
exit;
Aby uzyskać pełne odniesienie do ustawień uwierzytelniania, Zobacz kroki skompilowałem Po godzinach badań przez internet.
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
2015-04-06 13:23:20
To trochę mylące - uważam, że będziesz musiał przyznać sobie readWrite, aby odpytywać bazę danych. Użytkownik z dbadmin lub useradmin może administrować bazą danych (w tym przyznać sobie dodatkowe prawa), ale nie może wykonywać zapytań ani zapisywać danych.
Więc przyznaj sobie readWrite i powinno być dobrze -
Http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite
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-05-30 01:26:54
Być może Szybki przykład jak zmienić obecnego użytkownika będzie dla kogoś pomocny. Tego właśnie szukałem.
Za radą @ JohnPetrone dodałem readWrite rolę do mojego admina z grantRolesToUser
> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
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-05-04 14:21:12
Możesz spróbować: użycie flagi --authenticationDatabase pomaga.
mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "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-02-22 23:14:58
Wiem, że ta odpowiedź pojawi się bardzo późno w tym wątku, ale mam nadzieję, że ją sprawdzisz.
Powód, dla którego dostajesz ten błąd, opiera się na konkretnej roli, którą przyznałeś użytkownikowi, którą już zebrałeś, i tak nadanie temu użytkownikowi roli root
rozwiąże twój problem, ale musisz najpierw zrozumieć, co dokładnie robią te role, zanim przyznasz je użytkownikom.
W tutorialu przyznałeś użytkownikowi rolę userAdminAnyDatabase
, która w zasadzie daje użytkownikowi możliwość zarządzania użytkownikami ze wszystkich Twoich baz danych.
To, co próbowałeś zrobić ze swoim użytkownikiem, wykracza poza jego definicję roli.
Rola root
ma tę rolę w swojej definicji, a także readWriteAnyDatabase
, dbAdminAnyDatabase
i inne role czyniące go superużytkownikiem(w zasadzie dlatego, że można z nim zrobić wszystko).
Możesz sprawdzić definicje ról, aby zobaczyć, które role będą potrzebne użytkownikom do wykonania określonych zadań. https://docs.mongodb.com/manual/reference/built-in-roles / To nie jest wskazane aby wszyscy użytkownicy byli super:)
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-16 21:04:01
Ponadto zauważ, że jeśli twój Klient powłoki Mongo nie połączy się poprawnie z instancją mongod
, możesz otrzymać takie błędy "Odmowa uprawnień".
Upewnij się, że klient otworzy połączenie, sprawdzając port połączenia, ale także, że port, którego używasz, nie jest używany. Możesz ustawić inny port używając parametru --port <port>
zarówno w powłoce, jak i w procesie.
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-08-26 14:13:01
To proste pytanie.
- ważne jest, aby zmienić docelowy db , A NIE admin.
Użyj yourDB
- Sprawdź swoje uwierzytelnienie db przez
Pokaż użytkowników
- Jeśli otrzymasz {} pusty obiekt, który jest pytaniem. Wystarczy wpisać
Db.createUser( { user: "yourUser", pwd: "hasło", role: ["readWrite", " dbAdmin" ] } )
LUB
Db.grantRolesToUser ('yourUser', [{role: "dbAdmin", db: "yourDB"}])
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-27 11:52:30
Miałem podobny problem w środowisku Windows: zainstalowałem Bitnami DreamFactory i instaluje również inny MongoDb, który jest uruchamiany podczas rozruchu systemu. Uruchomiłem moją usługę MongoDbService (która została uruchomiona bez żadnego błędu), ale zauważyłem po utracie dużo czasu, że w rzeczywistości łączyłem się z usługą MongoDB Bitnami. Sprawdź, czy na twoim serwerze nie działa żadna inna instancja mongoDB.
Powodzenia!
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-02-07 19:39:57
Może to być spowodowane tym, że nie ustawiłeś noAuth=true w mongodb.conf
# Turn on/off security. Off is currently the default
noauth = true
#auth = true
Po ustawieniu tej opcji Uruchom ponownie usługę używając
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
2016-03-22 05:17:40