Kemungkinan lain: Saat Anda membuat pengguna, Anda mungkin secara tidak sengaja telah usemembuat database selain admin, atau selain yang Anda inginkan. Anda perlu menyetel --authenticationDatabaseke database tempat pengguna sebenarnya dibuat.
mongodbtampaknya menempatkan Anda dalam testdatabase dengan default ketika Anda membuka shell, sehingga Anda akan perlu untuk menulis --authenticationDatabase testdaripada --authenticationDatabase adminjika Anda secara tidak sengaja yang useing testketika 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 authorizationyang 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 dbnilainya sama test. Itu karena saat saya membuat pengguna, saya tidak menjalankan use adminatau 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.