Kemungkinan lain: Saat Anda membuat pengguna, Anda mungkin secara tidak sengaja telah use
membuat database selain admin
, atau selain yang Anda inginkan. Anda perlu menyetel --authenticationDatabase
ke database tempat pengguna sebenarnya dibuat.
mongodb
tampaknya menempatkan Anda dalam test
database dengan default ketika Anda membuka shell, sehingga Anda akan perlu untuk menulis --authenticationDatabase test
daripada --authenticationDatabase admin
jika Anda secara tidak sengaja yang use
ing test
ketika Anda berlari db.createUser(...)
.
Dengan asumsi Anda memiliki akses ke mesin yang menjalankan instance mongodb, y dapat menonaktifkan otorisasi di /etc/mongod.conf
(komentar keluar authorization
yang bersarang di bawah keamanan), lalu mulai ulang server Anda, lalu jalankan:
mongo
show users
Dan Anda mungkin mendapatkan sesuatu seperti ini:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Perhatikan bahwa db
nilainya sama test
. Itu karena saat saya membuat pengguna, saya tidak menjalankan use admin
atau use desiredDatabaseName
. Jadi Anda dapat menghapus pengguna dengan db.dropUser("myusername")
dan kemudian membuat pengguna lain di bawah database yang Anda inginkan seperti:
use desiredDatabaseName
db.createUser(...)
Mudah-mudahan itu membantu seseorang yang pernah berada di posisi saya sebagai noob dengan hal ini.