Інша можливість: Коли ви створювали користувача, можливо, ви випадково ввели use
базу даних admin
, відмінну від тієї, яку ви бажали. Вам потрібно встановити --authenticationDatabase
базу даних, в якій користувач насправді був створений.
mongodb
Здається , щоб поставити вас в test
базі даних за замовчуванням при відкритті оболонки, так що вам потрібно писати , --authenticationDatabase test
а не --authenticationDatabase admin
якщо ви випадково були use
ING , 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(...)
Будемо сподіватися, що це допоможе комусь, хто був на моєму місці як нуб із цим матеріалом.