Другая возможность: при создании пользователя вы могли случайно useиспользовать базу данных admin, отличную от той, которую вы хотели. Вам нужно установить--authenticationDatabase базу данных, в которой был фактически создан пользователь.
mongodbкажется, testпо умолчанию помещает вас в базу данных, когда вы открываете оболочку, поэтому вам нужно будет писать, --authenticationDatabase testа не --authenticationDatabase adminесли вы случайно useошиблись testпри запускеdb.createUser(...) .
Предполагая, что у вас есть доступ к машине, на которой запущен экземпляр mongodb, y можно отключить авторизацию в /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(...)
Надеюсь, это поможет кому-то, кто был в моем положении как новичок, с этим.