MongoDB apa pengguna dan kata sandi default?


109

Saya menggunakan string koneksi yang sama di lokal dan produksi. Ketika string koneksi adalahmongodb://localhost/mydb

Apa username dan passwordnya? Apakah aman untuk tetap seperti ini?

Jawaban:


218

Secara default mongodb tidak memiliki kontrol akses yang diaktifkan, jadi tidak ada pengguna atau kata sandi default.

Untuk mengaktifkan kontrol akses, gunakan opsi baris perintah --authatau pengaturan file konfigurasi security.authorization.

Anda dapat menggunakan prosedur berikut atau merujuk ke Mengaktifkan Auth di dokumen MongoDB.

Prosedur

  1. Mulai MongoDB tanpa kontrol akses.

    mongod --port 27017 --dbpath /data/db1
    
  2. Hubungkan ke instance.

    mongo --port 27017
    
  3. Buat administrator pengguna.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. Mulai ulang instance MongoDB dengan kontrol akses.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. Otentikasi sebagai administrator pengguna.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    

19
Jika pengguna dibuat dengan peran userAdminAnyDatabase, maka tidak mungkin membuat database apa pun. Oleh karena itu, bagian peran harus: peran: [{role: "root", db: "admin"}]
georgeos


1
jika Anda ingin menemukan dbpath, gunakan: grep dbPath /etc/mongod.conf
rckd

14

Selain apa yang telah disebutkan @Camilo Silva, jika Anda ingin memberikan akses gratis untuk membuat database, membaca, menulis database, dll, tetapi Anda tidak ingin membuat peran root, Anda dapat mengubah langkah ke-3 dengan cara berikut:

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)


2

Selain jawaban yang diberikan sebelumnya, satu opsi adalah mengikuti pendekatan 'pengecualian localhost' untuk membuat pengguna pertama jika db Anda sudah dimulai dengan kontrol akses ( --authsakelar). Untuk melakukan itu, Anda harus memiliki akses localhost ke server dan kemudian menjalankan:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

Seperti yang dinyatakan dalam dokumentasi MongoDB:

Pengecualian localhost memungkinkan Anda untuk mengaktifkan kontrol akses dan kemudian membuat pengguna pertama dalam sistem. Dengan pengecualian localhost, setelah Anda mengaktifkan kontrol akses, hubungkan ke antarmuka localhost dan buat pengguna pertama di database admin. Pengguna pertama harus memiliki hak istimewa untuk membuat pengguna lain, seperti pengguna dengan peran userAdmin atau userAdminAnyDatabase. Koneksi yang menggunakan pengecualian localhost hanya memiliki akses untuk membuat pengguna pertama di database admin.

Ini adalah tautan ke bagian dokumen itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.