Mongodb

MongoDB root 使用者無法訪問配置數據庫

  • September 29, 2020

我正在嘗試使用mongodump. 這需要訪問config數據庫,而我的 mongo 使用者沒有,儘管擔任該root角色。(根據我對內置角色文件的理解,擁有該角色的使用者root應該能夠備份實例上的所有數據庫。)

當我嘗試執行時mongodump,我收到此錯誤:

root@mongo-db1:/srv/mongo# mongodump --username=rcroot --password="secret" --out=/var/backups/20200925
2020-09-26T05:40:20.138+0000    Failed: error counting config.system.indexBuilds: not authorized on config to execute command { count: "system.indexBuilds", query: {}, $readPreference: { mode: "secondaryPreferred" }, $db: "config" }

所以顯然我的使用者無權訪問config. 這是我的使用者:

rs0:PRIMARY> db.getUser("rcroot")
{
       "_id" : "admin.rcroot",
       "userId" : UUID("81fc86ff-6d12-4d23-83ab-7fc2591516a2"),
       "user" : "rcroot",
       "db" : "admin",
       "roles" : [
               {
                       "role" : "userAdminAnyDatabase",
                       "db" : "admin"
               },
               {
                       "role" : "root",
                       "db" : "admin"
               }
       ],
       "mechanisms" : [
               "SCRAM-SHA-1",
               "SCRAM-SHA-256"
       ]
}

如果我以 root 使用者登錄到mongoshell 並嘗試訪問config數據庫中的任何內容,我會收到與上述類似的錯誤。我確實啟用了身份驗證,因為我從mongod標誌--auth開始:

mongod --auth --replSet rs0 --keyFile /data/db/keyfile --enableMajorityReadConcern false

所以我的問題是:我需要做什麼才能授予該使用者root對我的 mongo 實例上所有數據庫的真正訪問權限?

事實證明,這是由mongodump執行檔和mongod伺服器之間的版本不匹配引起的。(我mongod在 docker 容器中執行,我試圖從容器外部的主機進行備份,該容器安裝了不同版本的工具。)

當我切換到mongodump伺服器版本附帶的版本時,它執行良好。

引用自:https://serverfault.com/questions/1035411