Mongodb
為什麼 MongoDB 不允許連接指定的數據庫?
我在 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