本文介紹云數據庫 MongoDB 版root賬號的權限。
當您創建云數據庫 MongoDB 版實例后,系統會自動在admin數據庫中創建一個root賬號。根據實例版本的不同,root賬號的權限策略也有所不同,不同版本的root權限賬號策略如下:
4.2版本及以下實例:擁有MongoDB內置的root角色權限。
4.4版本及以上實例:擁有alibabaCloudAdmin角色權限。
重要由于部分場景下寫入數據到admin系統庫會導致嚴重的性能抖動,因此alibabaCloudAdmin角色不具備admin庫的寫入權限,同時也無法創建擁有admin系統庫可寫權限的賬號。
您可以使用rolesInfo
命令查看具體的角色權限。root角色權限和rolesInfo
命令的更多介紹,請分別參見root和rolesInfo。
為了您的數據安全,不建議使用root賬號管理數據庫,請根據業務需求創建擁有相關權限的數據庫賬號。具體操作,請參見云數據庫MongoDB版上如何創建賬號。
您可以執行如下命令可以查看root賬號的權限:
db.getSiblingDB("admin").runCommand({usersInfo: "root"});
usersInfo
參數的更多信息,請參見usersInfo。
alibabaCloudAdmin權限
擁有的內置role權限(例如讀寫集合、賬號管理、查看統計等):readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、clusterMonitor、backup、enableSharding、restore。
說明alibabaCloudAdmin只有admin庫的讀權限。
支持分片集群的相關命令:flushRouterConfig、cleanupOrphaned、runCommandOnShard、splitVector、clearJumboFlag、moveChunk、splitChunk。
常見問題
Q:為什么無法創建含clusterAdmin、clusterManager、hostManager等高權限user或role?
A:alibabaCloudAdmin權限有限,因此在創建自定義user或role時,不能高于root賬號現有權限范圍。
Q:為什么無法在admin庫下創建含readWrite、dbAdmin、dbOwner權限的user或role?
A:alibabaCloudAdmin對于admin庫僅有只讀權限,無法進行寫入,您可以在其他庫下創建包含這些內置權限的user或role。
Q:如何創建一個對所有自定義集合都有讀寫等權限的user?
A:您可以在admin庫下創建包含readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase的賬號。命令如下:
db.getSiblingDB("admin").createUser({user:"myName",pwd:"myPassword",roles:["readWriteAnyDatabase"]})
Q:clusterManager包含了很多分片集群運維相關命令的權限,不能創建的話如何使用?
A:alibabaCloudAdmin權限的root賬號本身自帶一些分片集群運維相關命令的權限,您可以使用root賬號來進行這些操作。
如果您想創建一個自定義賬號來執行運維命令,可以使用以下方式來創建user。此處以創建支持splitVector命令的user為例:
db.runCommand({createRole:'myRole',privileges:[{"resource":{"db":"","collection":""},"actions":['splitVector']}],roles:['readAnyDatabase']}) db.getSiblingDB("admin").createUser({user:"myUser",pwd:"myPassword",roles:["myRole"]})
Q:使用flink-sql-connector-mongodb-cdc時,為什么按照示例創建role返回結果顯示沒權限?
A:listDatabases動作是針對整個集群的,需要放在Cluster Resource中執行,您可以先改用如下命令來創建自定義role。
db.createRole( { role: "flinkrole", privileges: [ { resource: { db: "", collection: "" }, actions: [ "splitVector", "listCollections", "collStats", "find", "changeStream" ] }, { resource: { "cluster": true }, actions: [ "listDatabases" ] } ], roles: [ { role: 'read', db: 'config' } ] } );
如果role和user都創建成功后,在使用cdc的過程中仍然出錯,請提交工單聯系技術支持協助處理。