All Products
Search
Document Center

ApsaraDB for MongoDB:Izin akun root yang ditentukan saat pembuatan instans

Last Updated:Jul 04, 2026

Saat Anda membuat instans ApsaraDB for MongoDB, sistem secara otomatis membuat akun root di database admin. Izin yang diberikan kepada akun root ini bergantung pada versi MongoDB yang dijalankan oleh instans Anda.

Versi instans Peran yang diberikan ke akun root
MongoDB 4.2 dan sebelumnya Peran bawaan root
MongoDB 4.4 atau lebih baru alibabaCloudAdmin (peran kustom Alibaba Cloud)

Untuk memeriksa kemampuan akun root, jalankan:

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

Untuk detail mengenai perintah usersInfo, lihat usersInfo.

Untuk memeriksa izin suatu peran tertentu, gunakan perintah rolesInfo. Untuk peran bawaan root, lihat root.

Penting

Demi keamanan data, hindari menggunakan akun root untuk operasi database sehari-hari. Sebagai gantinya, buat akun database khusus dengan hanya izin yang dibutuhkan oleh workload Anda. Lihat Buat akun untuk instans ApsaraDB for MongoDB.

Izin peran alibabaCloudAdmin

Peran alibabaCloudAdmin adalah peran kustom untuk ApsaraDB for MongoDB. Peran ini berbeda dari peran root standar — memahami perbedaan ini membantu Anda menghindari error izin yang tidak terduga.

Peran bawaan yang disertakan

Peran alibabaCloudAdmin menggabungkan peran bawaan MongoDB berikut:

Peran bawaan Kemampuan
readWriteAnyDatabase Membaca dan menulis koleksi di database mana pun
userAdminAnyDatabase Mengelola akun di database mana pun
dbAdminAnyDatabase Menanyakan statistik dan mengelola indeks di database mana pun
clusterMonitor Akses read-only ke alat pemantauan
backup Melakukan operasi backup
enableSharding Mengaktifkan sharding pada database
restore Memulihkan data dari backup

Pembatasan database admin

Peran alibabaCloudAdmin memiliki akses read-only ke database admin. Peran ini tidak dapat menulis ke database admin dan tidak dapat membuat akun dengan izin tulis pada database admin.

Penting

Dalam beberapa skenario, jitter performa parah dapat terjadi saat Anda menulis data ke database admin. Akibatnya, Anda tidak dapat membuat pengguna atau peran dengan izin readWrite, dbAdmin, atau dbOwner yang diterapkan pada database admin.

Perbedaan dari perilaku MongoDB standar

Izin xxxAnyDatabase di ApsaraDB for MongoDB (seperti readWriteAnyDatabase) tidak mencakup database config, local, dan admin. Di MongoDB standar, peran-peran tersebut mencakup semua database. Ingat hal ini saat memberikan izin untuk operasi yang menyentuh database sistem tersebut.

Perintah O&M kluster sharded

Untuk instans kluster sharded, akun root dengan peran alibabaCloudAdmin dapat menjalankan perintah O&M berikut secara langsung:

flushRouterConfig, cleanupOrphaned, runCommandOnShard, splitVector, clearJumboFlag, moveChunk, splitChunk

FAQ

Mengapa saya tidak bisa membuat pengguna atau peran dengan hak istimewa `clusterAdmin`, `clusterManager`, atau `hostManager`?

Peran alibabaCloudAdmin tidak mencakup hak istimewa tingkat kluster ini, sehingga Anda tidak dapat memberikannya kepada pengguna atau peran kustom — izin akun kustom tidak boleh melebihi cakupan izin akun root itu sendiri.

Mengapa saya tidak bisa membuat pengguna atau peran dengan izin `readWrite`, `dbAdmin`, atau `dbOwner` pada database admin?

Peran alibabaCloudAdmin hanya memiliki izin baca pada database admin, sehingga tidak dapat membuat akun dengan akses tulis di sana. Buatlah pengguna atau peran dengan izin tersebut pada database non-admin sebagai gantinya.

Bagaimana cara membuat akun dengan akses baca/tulis ke semua koleksi kustom?

Buat akun tersebut di database admin dan berikan peran readWriteAnyDatabase:

db.getSiblingDB("admin").createUser({
  user: "myName",
  pwd: "myPassword",
  roles: ["readWriteAnyDatabase"]
})

Saya perlu menjalankan perintah O&M kluster sharded, tetapi tidak bisa membuat peran `clusterManager`. Apa yang harus saya lakukan?

Akun root sudah mendukung perintah O&M yang tercantum di bagian Perintah O&M kluster sharded — gunakan akun tersebut secara langsung untuk operasi tersebut.

Untuk menjalankan perintah tertentu dengan akun kustom, buat peran kustom yang hanya memberikan aksi yang Anda butuhkan. Contoh berikut membuat pengguna yang dapat menjalankan splitVector (hanya didukung pada instans kluster sharded):

db.runCommand({
  createRole: 'myRole',
  privileges: [{
    resource: { db: "", collection: "" },
    actions: ['splitVector']
  }],
  roles: ['readAnyDatabase']
})

db.getSiblingDB("admin").createUser({
  user: "myUser",
  pwd: "myPassword",
  roles: ["myRole"]
})

Mengapa akun baru saya mendapat error izin saat menggunakan change streams di database admin?

Peran xxxAnyDatabase di ApsaraDB for MongoDB tidak mencakup database admin (berbeda dengan MongoDB standar). Berikan akun tersebut izin readAnyDatabase pada database lain, lalu berikan secara eksplisit izin read pada database admin:

db.adminCommand({
  grantRolesToUser: "myUser",
  roles: [{ role: "read", db: "admin" }]
})

Mengapa peran yang dibuat dengan contoh flink-sql-connector-mongodb-cdc tidak menampilkan izin apa pun?

Aksi listDatabases harus diberikan pada resource kluster, bukan pada resource database atau koleksi. Gunakan perintah berikut untuk membuat peran tersebut dengan benar:

db.createRole({
  role: "flinkrole",
  privileges: [
    {
      resource: { db: "", collection: "" },
      actions: [
        "splitVector",
        "listCollections",
        "collStats",
        "find",
        "changeStream"
      ]
    },
    {
      resource: { cluster: true },
      actions: ["listDatabases"]
    }
  ],
  roles: [
    { role: "read", db: "config" }
  ]
});

Jika Anda masih mengalami error setelah membuat peran dan pengguna, submit a ticket untuk menghubungi dukungan teknis Alibaba Cloud.