Інша можливість: Коли ви створювали користувача, можливо, ви випадково ввели useбазу даних admin, відмінну від тієї, яку ви бажали. Вам потрібно встановити --authenticationDatabaseбазу даних, в якій користувач насправді був створений.
mongodbЗдається , щоб поставити вас в testбазі даних за замовчуванням при відкритті оболонки, так що вам потрібно писати , --authenticationDatabase testа не --authenticationDatabase adminякщо ви випадково були useING , testколи ви запускали db.createUser(...).
Припускаючи, що у вас є доступ до машини, на якій запущений екземпляр mongodb, ви можете відключити авторизацію /etc/mongod.conf(прокоментувати, authorizationяка вкладена в систему безпеки), а потім перезапустити сервер, а потім запустити:
mongo
show users
І ви можете отримати щось подібне:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Зверніть увагу, що dbзначення дорівнює test. Це тому, що коли я створював користувача, я не запускав спочатку use adminабо use desiredDatabaseName. Таким чином, ви можете видалити користувача за допомогою, db.dropUser("myusername")а потім створити іншого користувача під потрібною базою даних приблизно так:
use desiredDatabaseName
db.createUser(...)
Будемо сподіватися, що це допоможе комусь, хто був на моєму місці як нуб із цим матеріалом.