All Products
Search
Document Center

ApsaraDB for MongoDB:Manage database accounts using the mongo shell

Last Updated:Jul 18, 2026

Mongo shell adalah alat manajemen database yang disertakan dengan MongoDB. Anda dapat menggunakannya untuk membuat dan mengkueri akun database di ApsaraDB for MongoDB.

Prasyarat

  1. Instans ApsaraDB for MongoDB telah dibuat. Untuk informasi selengkapnya tentang cara membuat berbagai jenis instans, lihat topik berikut:

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

Peringatan

Akun database harus unik dalam satu database.

Create a database account

Catatan
  • Akun database yang dibuat menggunakan mongo shell tidak ditampilkan pada halaman Accounts di konsol ApsaraDB for MongoDB.

  • Saat pertama kali membuat akun database menggunakan mongo shell, Anda harus mengautentikasi akun root bawaan instans di database admin.

  1. Beralih ke database admin.

    use admin
    Catatan

    Anda dapat menjalankan perintah ini tanpa modifikasi.

  2. Autentikasi akun root.

    Sintaksis:

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

    Deskripsi parameter: password menentukan password akun root.

    Contoh:

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

    Untuk membatasi akses ke koleksi tertentu, buat role database kustom guna kontrol akses detail halus.

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

    • Cakupan role: Role hanya dapat digunakan di database tempat role tersebut dibuat. Jika role berlaku untuk beberapa database, Anda harus membuat role 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 role baru.

    readRole

    role_database_name

    Database tempat role memiliki izin operasi.

    testDB

    collection_name

    Nama koleksi.

    testCollection

    actions

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

    find

    roles

    Role lain yang diwarisi oleh role ini. Array kosong menunjukkan tidak ada pewarisan, tetapi field roles wajib ada.

    []

    Catatan

    Untuk informasi selengkapnya, lihat createRole.

    Contoh:

    Buat role 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 tampak seperti berikut:

    {
      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 akun tersebut dibuat.

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

    Sintaksis:

    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 mengandung karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encode terhadap karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Password akun database.

    123456Aa

    role_name

    Role yang diberikan kepada akun database.

    Untuk informasi selengkapnya tentang nilai yang valid, lihat Roles of database accounts.

    readAnyDatabase

    role_database_name

    Nama database tempat role tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan role 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 password menjadi 123456Aa, dan berikan role readAnyDatabase kepada akun test.

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

    Tanggapan sukses tampak seperti berikut:

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

    Metode 2: Buat akun tanpa beralih database

    Anda dapat menggunakan salah satu metode berikut untuk membuat akun database tanpa beralih database.

    db.getMongo()

    Sintaksis:

    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 mengandung karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encode terhadap karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Password akun database.

    123456Aa

    role_name

    Role yang diberikan kepada akun database.

    Untuk informasi selengkapnya tentang nilai yang valid, lihat Roles of database accounts.

    readAnyDatabase

    role_database_name

    Nama database tempat role tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan role 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 password menjadi 123456Aa, dan berikan role readAnyDatabase kepada akun test.

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

    Tanggapan sukses tampak seperti berikut:

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

    db.getSiblingDB()

    Sintaksis:

    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 mengandung karakter khusus, seperti :/?#[]@, Anda harus melakukan percent-encode terhadap karakter khusus tersebut. Untuk informasi tentang cara melakukan percent encoding, lihat Percent-Encoding.

    test

    password

    Password akun database.

    123456Aa

    role_name

    Role yang diberikan kepada akun database.

    Untuk informasi selengkapnya tentang nilai yang valid, lihat Roles of database accounts.

    readAnyDatabase

    role_database_name

    Nama database tempat role tersebut berada.

    Sebagai contoh, {role: "readAnyDatabase", db: "admin"} memberikan role 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 password menjadi 123456Aa, dan berikan role readAnyDatabase kepada akun test.

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

    Tanggapan sukses tampak seperti berikut:

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

Query database accounts

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 tampak seperti berikut:

{ "_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 tampak seperti berikut:

    {
            "_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.

    Sintaksis:

    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 tampak seperti berikut:

    { "_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 mengkueri satu akun database harus dijalankan di database admin.

Sintaksis:

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 tampak seperti berikut:

{ "_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" } ] }

Roles of database accounts

Database

Role

Deskripsi

All databases

readOnly

Memberikan izin read-only pada database.

readWrite

Memberikan izin baca dan tulis pada database.

userAdmin

Memberikan izin untuk membuat akun dan role di database.

dbAdmin

Memberikan izin untuk mengelola koleksi di database.

dbOwner

Mencakup semua izin readWrite, userAdmin, dan dbAdmin.

enableSharding

Memungkinkan database di instans kluster sharded untuk di-shard di beberapa shard.

admin database

readAnyDatabase

Memberikan izin read-only pada semua database.

readWriteAnyDatabase

Memberikan izin baca dan tulis pada semua database.

userAdminAnyDatabase

Memberikan izin untuk membuat akun dan role di semua database.

dbAdminAnyDatabase

Memberikan izin untuk mengelola koleksi di semua database.

clusterMonitor

Memberikan izin untuk menjalankan perintah pengumpulan 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 clusterMonitor, hostManager, dan clusterManager.

root

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

Catatan

Untuk informasi selengkapnya tentang role, lihat Built-In Roles.

Referensi