Próbuję utworzyć prostego użytkownika z uprawnieniami do dostępu do dowolnej bazy danych i mogę wykonywać dowolne czynności. Kiedy próbuję wykonać createUser
polecenie, otrzymałem ten błąd:
db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
2015-08-20T17:09:42.300+0000 E QUERY Error: couldn't add user: No role named userAdminAnyDatabase@new_vehicles_catalog
Powyższy problem występuje tylko wtedy, gdy włączę konfigurację uwierzytelniania i jej potrzebuję.
Jak więc utworzyć użytkownika z uprawnieniami administratora do dowolnej bazy danych. Chcę tego, ponieważ skonfigurowałem moje usługi mongo do korzystania z połączenia uwierzytelniającego. Jeśli chcę wykonać zrzut moich danych, muszę użyć tych parametrów uwierzytelniania.
Proszę o pomoc?
Korzystanie z wersji mongo 3.0.5 .
usługa jest dostępna na Amazon Linux AMI 2015.03 (HVM), typ woluminu SSD - ami-1ecae776
źródło
Zgodnie z
MongoDB BOL
Włącz uwierzytelnianie Przy włączonej kontroli dostępu upewnij się, że masz użytkownika z rolą userAdmin lub userAdminAnyDatabase w bazie danych administratora. Ten użytkownik może administrować użytkownikami i rolami, takimi jak: tworzenie użytkowników, przyznawanie lub odwoływanie ról od użytkowników oraz tworzenie lub modyfikowanie ról celnych.Możesz tworzyć użytkowników przed włączeniem kontroli dostępu lub po nim. Jeśli włączysz kontrolę dostępu przed utworzeniem dowolnego użytkownika, MongoDB zapewnia wyjątek localhost, który umożliwia utworzenie administratora użytkownika w bazie danych administratora. Po utworzeniu należy uwierzytelnić się jako administrator użytkownika, aby w razie potrzeby utworzyć dodatkowych użytkowników.
Procedura
Oto następująca procedura, dzięki której możesz
Enable Auth
. Najpierw dodaje administratora użytkownika do instancji MongoDB działającej bez kontroli dostępu, a następnie włącza kontrolę dostępu.Połącz z instancją
Na przykład podłącz
mongo
powłokę do instancji.Podaj dodatkowe opcje wiersza polecenia, aby połączyć
mongo
powłokę z wdrożeniem, takie jak--host
.Utwórz administratora użytkownika
Na przykład tutaj w bazie danych administratora dodaj użytkownika z
userAdminAnyDatabase
rolą. Na przykład następujące tworzy użytkownikamyUserAdmin
w bazie danych administratora :Odłącz
mongo
powłokę.Uruchom ponownie instancję MongoDB z kontrolą dostępu
Uruchom ponownie
mongod
instancję za pomocą opcji --auth wiersza polecenia lub, jeśli używasz pliku konfiguracyjnego, ustawienia security.authorization .Klienci łączący się z tym wystąpieniem muszą teraz uwierzytelnić się jako
MongoDB
użytkownik. Klienci mogą wykonywać tylko czynności określone przez przypisane im role.Połącz się i uwierzytelnij jako administrator użytkownika
Za pomocą
mongo
powłoki możesz:Połącz się z uwierzytelnianiem, przekazując poświadczenia użytkownika lub
Połącz najpierw bez uwierzytelniania, a następnie wydaj metodę db.auth () w celu uwierzytelnienia.
Aby uwierzytelnić podczas połączenia Uruchom
mongo
powłokę z-u <username>, -p <password>, and the --authenticationDatabase <database>
opcjami wiersza poleceń:Aby uwierzytelnić po połączeniu
Połącz
mongo
powłokę zmongod
:Przejdź do bazy danych uwierzytelniania (w tym przypadku admin) i użyj metody db.auth (,) do uwierzytelnienia:
źródło