DBeaver連接MongoDB

DBeaver企業版支持連接MongoDB數據庫。

由於第一次使用DBeaver連接MongoDB,出現一些坑,以此文檔記錄下坑坑窪窪

需求是:建立與MongoDB的連接後可以看到MongoDB裏面的所有數據庫

坑1、如果,這裏建立連接時使用某一個數據庫的用戶名密碼,創建後就只能看到自己有權限看到的數據庫。

坑2、如果使用root用戶密碼,且用戶root的角色是root,或角色是userAdminAnyDatabase(並不是一定要求用戶名是root,重點是角色,角色影響着權限,影響着能看到和操作哪些數據庫),且root用戶是屬於admin數據庫(系統自帶)。

使用上面的root連接時,Database必須選擇admin,否則報如下錯:

由於MongoDB的用戶在不同數據庫是可以重名的,所有用戶是跟數據庫相關的,這裏選擇的是哪個數據庫,用戶登錄驗證就是去哪個數據庫驗證,如上面的root用戶是admin數據庫的,在其他數據庫就肯定會認證失敗。

坑3、如下圖,如果這裏選擇的Mechanism爲NONE,就會導致不驗證,也就會導致雖然能連接成功,但是看不到任何數據庫。

> use admin
switched to db admin
> db.system.users.find({user:"root"})
{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "dBRpy8QbuPr5z2Ph0NC81Q==", "storedKey" : "BenFLJRZdZHDNqyAxST49ZqXuzY=", "serverKey" : "S/F5KxDOcD1T9gsNEfxeZdGL4mQ=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
> 

從上面可以看到,默認用戶的credentials是SCRAM-SHA-1,所以Mechanism要選擇SCRAM-SHA-1去驗證用戶名密碼。

最後,正確的連接方式如下圖,這樣連接後就可以看到所有的數據庫:

切記:如果root的權限只是userAdminAnyDatabase:有分配角色和用戶的權限,但沒有查寫的權限。當查看數據庫裏的集合時,就會出如下的錯誤。角色是root纔是超級管理員,纔可以查寫任何數據庫裏的數據。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章