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?

Juan Pablo Fernandez
sumber

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"
    
Camilo Silva
sumber
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
4
Harap tautkan postingan asli dari Manual MongoDB
ntcho
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" } ]
  }
)
Razvan Dumitru
sumber
4

Untuk MongoDB yang lebih lama dari 2.6, perintah untuk menambahkan pengguna root adalah addUser(misalnya)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
Hitam
sumber
1
Sampai versi 2.6 yang Anda miliki db.addUser. Memulai 2.6 dan di versi 3.4.x saat ini Anda dapat membuat pengguna dengan db.CreateUser.
Razvan Dumitru
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.

Fjut
sumber