Mongodb

為什麼 MongoDB 不允許連接指定的數據庫?

  • August 2, 2022

我在 Ubuntu 20.04 上安裝了 MongoDB 4.4。然後,我創建了一個使用者:

$ mongo
use admin
db.createUser({user:"admin",pwd:"foo",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

然後,我配置security.authorization: enabled/etc/mongod.conf重新啟動它。現在我可以這樣連接:

$ mongo localhost:27017 -u admin -p foo

工作得很好。但是,當我嘗試連接並指定test要使用的數據庫時,它會失敗並顯示“身份驗證失敗”:

$ mongo localhost:27017/test -u admin -p foo

怎麼了?

我通過執行解決了這個問題:

$ mongo
use test
db.createUser({user:"admin",pwd:"foo",roles:[{role:"dbOwner",db:"test"}]})

還是沒看懂邏輯。。。

所有身份驗證資訊都在 admin -database 中。

當您使用身份驗證並需要登錄到與預設不同的數據庫時,您需要告訴 mongo 什麼是身份驗證數據庫。這是通過參數完成的--authenticationDatabase admin

所以,在你的情況下:

mongo localhost:27017/test -u admin -p foo --authenticationDatabase admin

引用自:https://dba.stackexchange.com/questions/315074