全部產品
Search
文件中心

ApsaraDB for MongoDB:執行個體建立時指定的root帳號擁有什麼許可權?

更新時間:Jun 19, 2024

本文介紹ApsaraDB for MongoDBroot帳號的許可權。

當您建立ApsaraDB for MongoDB執行個體後,系統會自動在admin資料庫中建立一個root帳號。根據執行個體版本的不同,root帳號的權限原則也有所不同,不同版本的root許可權帳號策略如下:

  • 4.2版本及以下執行個體:擁有MongoDB內建的root角色許可權。

  • 4.4版本及以上執行個體:擁有alibabaCloudAdmin角色許可權。

    重要

    由於部分情境下寫入資料到admin系統庫會導致嚴重的效能抖動,因此alibabaCloudAdmin角色不具備admin庫的寫入許可權,同時也無法建立擁有admin系統庫可寫入權限的帳號。

您可以使用rolesInfo命令查看具體的角色許可權。root角色許可權和rolesInfo命令的更多介紹,請分別參見rootrolesInfo

重要

為了您的資料安全,不建議使用root帳號管理資料庫,請根據業務需求建立擁有相關許可權的資料庫帳號。具體操作,請參見ApsaraDB for MongoDB上如何建立帳號

您可以執行如下命令可以查看root帳號的許可權:

db.getSiblingDB("admin").runCommand({usersInfo: "root"});
說明

usersInfo參數的更多資訊,請參見usersInfo

alibabaCloudAdmin許可權

常見問題

  • 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",
                    "listDatabases",
                    "listCollections",
                    "collStats",
                    "find",
                    "changeStream" ]
            },
            {
                resource: { "cluster": true }, 
                actions: [ "listDatabases" ]
            }
            ],
            roles: [
                { role: 'read', db: 'config' }
            ]
        }
    );

    如果role和user都建立成功後,在使用cdc的過程中仍然出錯,請提交工單聯絡支援人員協助處理。