Mongodb
MongoDB root 使用者無法訪問配置數據庫
我正在嘗試使用
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 使用者登錄到
mongo
shell 並嘗試訪問config
數據庫中的任何內容,我會收到與上述類似的錯誤。我確實啟用了身份驗證,因為我從mongod
標誌--auth
開始:mongod --auth --replSet rs0 --keyFile /data/db/keyfile --enableMajorityReadConcern false
所以我的問題是:我需要做什麼才能授予該使用者
root
對我的 mongo 實例上所有數據庫的真正訪問權限?
事實證明,這是由
mongodump
執行檔和mongod
伺服器之間的版本不匹配引起的。(我mongod
在 docker 容器中執行,我試圖從容器外部的主機進行備份,該容器安裝了不同版本的工具。)當我切換到
mongodump
伺服器版本附帶的版本時,它執行良好。