Inna możliwość: podczas tworzenia użytkownika mogłeś przypadkowo korzystać use
z bazy danych innej admin
lub innej niż ta, którą chciałeś. Musisz ustawić --authenticationDatabase
bazę danych, w której użytkownik został faktycznie utworzony.
mongodb
Wydaje się, można umieścić w test
bazie danych domyślnie po otwarciu powłoki, więc trzeba by napisać --authenticationDatabase test
zamiast --authenticationDatabase admin
jeśli przypadkowo zostały use
ing test
podczas uruchamiania db.createUser(...)
.
Zakładając, że masz dostęp do maszyny, na której działa instancja mongodb, możesz wyłączyć autoryzację /etc/mongod.conf
( wykomentować, authorization
która jest zagnieżdżona w zabezpieczeniach), a następnie zrestartować serwer, a następnie uruchomić:
mongo
show users
Możesz otrzymać coś takiego:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Zwróć uwagę, że db
wartość jest równa test
. Dzieje się tak, ponieważ kiedy utworzyłem użytkownika, nie uruchomiłem najpierw use admin
ani use desiredDatabaseName
. Możesz więc usunąć użytkownika za pomocą, db.dropUser("myusername")
a następnie utworzyć innego użytkownika w wybranej bazie danych, na przykład:
use desiredDatabaseName
db.createUser(...)
Mam nadzieję, że pomoże to komuś, kto był na moim stanowisku nooba w tych sprawach.