全部产品
Search
文档中心

ApsaraDB for MongoDB:Mengelola akun database menggunakan mongo shell

更新时间:Nov 10, 2025

Mongo shell adalah alat manajemen database yang disertakan dengan MongoDB. Topik ini menjelaskan cara menggunakan mongo shell untuk membuat dan menanyakan akun database di ApsaraDB for MongoDB.

Prasyarat

  1. Anda telah membuat instans ApsaraDB for MongoDB. Untuk informasi lebih lanjut tentang cara membuat berbagai jenis instans, lihat topik-topik berikut:

  2. Anda telah terhubung ke instans ApsaraDB for MongoDB menggunakan mongo shell. Untuk informasi lebih lanjut tentang cara terhubung ke berbagai jenis instans, lihat topik-topik berikut:

Peringatan

Akun database harus unik dalam satu database.

Buat akun database

Catatan
  • Akun database yang dibuat menggunakan mongo shell tidak dapat ditanyakan pada halaman Account Management di Konsol ApsaraDB for MongoDB.

  • Saat Anda membuat akun database menggunakan mongo shell untuk pertama kalinya, Anda harus mengotentikasi akun root bawaan dari instans di database admin.

  1. Pindah ke database admin.

    use admin
    Catatan

    Anda dapat menjalankan perintah ini tanpa modifikasi.

  2. Otentikasi akun root.

    Syntax:

    db.auth("root","password")

    Deskripsi parameter: password menentukan kata sandi akun root.

    Contoh:

    db.auth("root","123456Aa")
  3. (Opsional) Buat peran database kustom.

    Untuk membatasi akses ke koleksi tertentu, Anda dapat membuat peran database kustom guna menerapkan kontrol akses detail halus.

    • Beralih database: Jalankan perintah use database_name untuk beralih ke database target, di mana database_name adalah nama database target.

    • Ruang lingkup peran: Peran hanya dapat digunakan di database tempat ia dibuat. Jika peran berlaku untuk beberapa database, Anda harus membuat peran tersebut di database admin.

    Sintaksis:

    db.createRole({role: "role_name", privileges: [{resource: {db: "role_database_name", collection: "collection_name" }, actions: [ "actions" ] }],roles: []})

    Deskripsi parameter:

    Parameter

    Deskripsi

    Contoh

    role_name

    Nama peran baru.

    readRole

    role_database_name

    Nama database tempat peran tersebut berada.

    Parameter ini menentukan bahwa peran memiliki izin operasi pada database yang ditentukan.

    testDB

    collection_name

    Nama koleksi.

    testCollection

    actions

    Jenis operasi yang diizinkan, seperti find, insert, update, dan remove.

    find

    roles

    Peran lain yang diwarisi oleh peran ini. Array kosong menunjukkan bahwa peran ini tidak mewarisi peran lain, tetapi bidang roles harus disertakan.

    []

    Catatan

    Untuk informasi lebih lanjut, lihat createRole.

    Contoh:

    Buat peran bernama readRole di database testDB dan berikan izin find pada koleksi testCollection.

    db.createRole({role: "readRole",privileges: [{resource: {db: "testDB", collection: "testCollection" }, actions: [ "find" ]}],roles: []})

    Tanggapan sukses dikembalikan seperti yang ditunjukkan di bawah ini:

    {
      ok: 1,
      '$clusterTime': {
        clusterTime: Timestamp({ t: 1747119397, i: 1 }),
        signature: {
          hash: Binary(Buffer.from("fde8****", "hex"), 0),
          keyId: Long("7503****")
        }
      },
      operationTime: Timestamp({ t: 1747119397, i: 1 })
    }
  4. Buat Akun Database.

    Metode 1: Beralih ke database target untuk membuat akun

    Akun database termasuk dalam database tempat ia dibuat.

    Jalankan perintah use database_name untuk beralih ke database, di mana database_name adalah nama database target.

    Syntax:

    db.createUser({user: "user_name", pwd: "password", roles:[{role: "role_name", db: "role_database_name"}]})

    Deskripsi parameter:

    Parameter

    Deskripsi

    Contoh

    user_name

    Nama akun database.

    Jika nama akun berisi karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encoding pada karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Kata sandi akun database.

    123456Aa

    role_name

    Peran yang diberikan kepada akun database.

    Untuk informasi lebih lanjut tentang nilai-nilai valid, lihat Peran akun database.

    readAnyDatabase

    role_database_name

    Nama database tempat peran tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan peran readAnyDatabase dari database admin kepada akun. Ini memberikan izin read-only pada semua database.

    admin

    Contoh:

    Buat akun database bernama test di database admin, atur kata sandi menjadi 123456Aa, dan berikan peran readAnyDatabase kepada akun test.

    db.createUser({user: "test", pwd: "123456Aa", roles:[{role: "readAnyDatabase", db: "admin"}]})

    Tanggapan sukses dikembalikan seperti yang ditunjukkan di bawah ini:

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

    Metode 2: Buat akun tanpa beralih database

    Anda dapat menggunakan salah satu perintah berikut untuk membuat akun database.

    db.getMongo()

    Syntax:

    db.getMongo().getDB("database_name").createUser({user: "user_name", pwd: "password", roles: [{role: "role_name", db: "role_database_name"}]})

    Deskripsi parameter:

    Parameter

    Deskripsi

    Contoh

    database_name

    Nama database tempat akun tersebut berada.

    admin

    user_name

    Nama akun database.

    Jika nama akun berisi karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encoding pada karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Kata sandi akun database.

    123456Aa

    role_name

    Peran yang diberikan kepada akun database.

    Untuk informasi lebih lanjut tentang nilai-nilai valid, lihat Peran akun database.

    readAnyDatabase

    role_database_name

    Nama database tempat peran tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan peran readAnyDatabase dari database admin kepada akun. Ini memberikan izin read-only pada semua database.

    admin

    Contoh:

    Buat akun database bernama test yang termasuk dalam database admin, atur kata sandi menjadi 123456Aa, dan berikan peran readAnyDatabase kepada akun test.

    db.getMongo().getDB("admin").createUser({user: "test", pwd: "123456Aa", roles: [{role: "readAnyDatabase", db: "admin"}]})

    Tanggapan sukses dikembalikan seperti yang ditunjukkan di bawah ini:

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

    db.getSiblingDB()

    Syntax:

    db.getSiblingDB("database_name").createUser({user: "user_name", pwd: "password", roles: [{role: "role_name", db: "role_database_name"}]})

    Deskripsi parameter:

    Parameter

    Deskripsi

    Contoh

    database_name

    Nama database tempat akun tersebut berada.

    admin

    user_name

    Nama akun database.

    Jika nama akun berisi karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encoding pada karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Kata sandi akun database.

    123456Aa

    role_name

    Peran yang diberikan kepada akun database.

    Untuk informasi lebih lanjut mengenai nilai yang valid, lihat Peran akun database.

    readAnyDatabase

    role_database_name

    Nama database tempat peran tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan peran readAnyDatabase dari database admin kepada akun. Ini memberikan izin read-only pada semua database.

    admin

    Contoh:

    Buat akun database bernama test yang termasuk dalam database admin, atur kata sandi menjadi 123456Aa, dan berikan peran readAnyDatabase kepada akun test.

    db.getSiblingDB("admin").createUser({user: "test", pwd: "123456Aa", roles: [{role: "readAnyDatabase", db: "admin"}]})

    Tanggapan sukses dikembalikan seperti yang ditunjukkan di bawah ini:

    Successfully added user: {
            "user" : "test",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ]
    }

Menanyakan akun database

Kueri semua akun database dari instans ApsaraDB for MongoDB

Jalankan perintah berikut di database admin:

db.getCollection("system.users").find()
Catatan

Anda dapat menjalankan perintah ini tanpa modifikasi.

Tanggapan ditunjukkan di bawah ini:

{ "_id" : "admin.root", "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"), "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "WeN7mJumlZKG2dvzLRDL*****", "storedKey" : "wfRUnCq55ajFwnYxf9MQJ0k****", "serverKey" : "tP70xGJ9PRZs01VSJF1YDrHg****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "5aIQ734c2Whg2pPwfg****/mpJulsd+33rE****", "storedKey" : "otMBwA2TTwoU****+dfwccnfPN14Dy5Oq6keYOl****", "serverKey" : "VCE****+aLkXGzCqRiaPfjnFG4WFiAOq0BKXxTo0****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7ll****/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }

Kueri semua akun database di database target

Catatan

Anda dapat menjalankan perintah use database_name untuk beralih database, di mana database_name adalah nama database target.

  • Metode 1: Jalankan perintah kueri di database target.

    show users
    Catatan

    Anda dapat menjalankan perintah ini tanpa modifikasi.

    Tanggapan ditunjukkan di bawah ini:

    {
            "_id" : "admin.root",
            "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"),
            "user" : "root",
            "db" : "admin",
            "roles" : [
                    {
                            "role" : "root",
                            "db" : "admin"
                    }
            ],
            "mechanisms" : [
                    "SCRAM-SHA-1",
                    "SCRAM-SHA-256"
            ]
    }
    {
            "_id" : "admin.test",
            "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"),
            "user" : "test",
            "db" : "admin",
            "roles" : [
                    {
                            "role" : "readAnyDatabase",
                            "db" : "admin"
                    }
            ],
            "mechanisms" : [
                    "SCRAM-SHA-1",
                    "SCRAM-SHA-256"
            ]
    }
  • Metode 2: Jalankan perintah kueri di database admin.

    Syntax:

    db.getCollection("system.users").find({db: "database_name"})

    Deskripsi parameter: database_name menentukan nama database target.

    Contoh:

    db.getCollection("system.users").find({db: "admin"})

    Tanggapan ditunjukkan di bawah ini:

    { "_id" : "admin.root", "userId" : UUID("b079b4c8-0e34-4e0d-90f9-75741414****"), "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "WeN7mJumlZKG2dvzLRDL*****", "storedKey" : "wfRUnCq55ajFwnYxf9MQJ0k****", "serverKey" : "tP70xGJ9PRZs01VSJF1YDrHg****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "5aIQ734c2Whg2pPwfg****/mpJulsd+33rE****", "storedKey" : "otMBwA2TTwoU****+dfwccnfPN14Dy5Oq6keYOl****", "serverKey" : "VCE****+aLkXGzCqRiaPfjnFG4WFiAOq0BKXxTo0****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
    { "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7ll****/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }

Kueri satu akun database di database target

Catatan

Perintah untuk menanyakan satu akun database harus dijalankan di database admin.

Syntax:

db.getCollection("system.users").find({user: "user_name", db: "database_name"})

Deskripsi parameter:

  • user_name: menentukan nama akun database.

  • database_name: menentukan nama database tempat akun tersebut berada.

Contoh:

db.getCollection("system.users").find({user: "test", db: "admin"})

Tanggapan ditunjukkan di bawah ini:

{ "_id" : "admin.test", "userId" : UUID("769ea9a1-6224-470e-8162-19a62fa2****"), "user" : "test", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "8fyXsIUgs6aQmafhTDrS****", "storedKey" : "fJQFoKsl7llXdiU/4vFU4xQn****", "serverKey" : "Tf1zygJ****/3/P3UMM47rr8****" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "wcWRhs9VXEsmNWtd7ZD****+NbYXx8ugJ3p2****", "storedKey" : "A5GiH****/tf70hakRY3U3joho3GrtFWQ****/WX****", "serverKey" : "ryRAcj6zomYiHJqhA9ObvuYALc3ZZva8ImR7B89C****" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }

Peran akun database

Database

Peran

Deskripsi

Semua database

readOnly

Memberikan izin read-only pada database.

readWrite

Memberikan izin baca dan tulis pada database.

userAdmin

Memberikan izin untuk membuat akun dan peran di database.

dbAdmin

Memberikan izin untuk mengelola koleksi di database.

dbOwner

Mencakup semua izin dari readWrite, userAdmin, dan dbAdmin.

enableSharding

Memungkinkan sebuah database di instans kluster sharded didistribusikan di beberapa shard.

Database admin

readAnyDatabase

Memberikan izin read-only pada semua database.

readWriteAnyDatabase

Memberikan izin baca dan tulis pada semua database.

userAdminAnyDatabase

Memberikan izin untuk membuat akun dan peran di semua database.

dbAdminAnyDatabase

Memberikan izin untuk mengelola koleksi di semua database.

clusterMonitor

Memberikan izin untuk menjalankan berbagai perintah untuk mengumpulkan informasi.

hostManager

Memberikan izin untuk menjalankan perintah seperti setParameter, killop, resync, dan killCursors.

clusterManager

Memberikan izin untuk menjalankan perintah manajemen node.

clusterAdmin

Mencakup semua izin dari clusterMonitor, hostManager, dan clusterManager.

root

Mencakup semua izin di database admin, seperti readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase, dan dbAdminAnyDatabase.

Catatan

Untuk informasi lebih lanjut tentang peran, lihat Built-In Roles.

Referensi