Другая возможность: при создании пользователя вы могли случайно 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(...)
Надеюсь, это поможет кому-то, кто был в моем положении как новичок, с этим.