Inna możliwość: podczas tworzenia użytkownika mogłeś przypadkowo korzystać usez bazy danych innej adminlub innej niż ta, którą chciałeś. Musisz ustawić --authenticationDatabasebazę danych, w której użytkownik został faktycznie utworzony.
mongodbWydaje się, można umieścić w testbazie danych domyślnie po otwarciu powłoki, więc trzeba by napisać --authenticationDatabase testzamiast --authenticationDatabase adminjeśli przypadkowo zostały useing testpodczas 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ć, authorizationktó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 dbwartość jest równa test. Dzieje się tak, ponieważ kiedy utworzyłem użytkownika, nie uruchomiłem najpierw use adminani 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.