All Products
Search
Document Center

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

Last Updated:Mar 28, 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 instansPeran yang diberikan ke akun root
MongoDB 4.2 dan sebelumnyaPeran bawaan root
MongoDB 4.4 atau lebih barualibabaCloudAdmin (peran kustom Alibaba Cloud)

Untuk memeriksa apa yang dapat dilakukan oleh 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 bawaanKemampuan
readWriteAnyDatabaseMembaca dan menulis koleksi di database mana pun
userAdminAnyDatabaseMengelola akun di database mana pun
dbAdminAnyDatabaseMeminta statistik dan mengelola indeks di database mana pun
clusterMonitorAkses read-only ke alat pemantauan
backupMelakukan operasi backup
enableShardingMengaktifkan sharding pada database
restoreMemulihkan 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 menulis pada database admin.

Penting

Pada 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:

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 mendapatkan error setelah membuat peran dan pengguna, submit a ticket untuk menghubungi dukungan teknis Alibaba Cloud.