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?
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:
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 --auth
atau pengaturan file konfigurasi security.authorization.
Anda dapat menggunakan prosedur berikut atau merujuk ke Mengaktifkan Auth di dokumen MongoDB.
Mulai MongoDB tanpa kontrol akses.
mongod --port 27017 --dbpath /data/db1
Hubungkan ke instance.
mongo --port 27017
Buat administrator pengguna.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Mulai ulang instance MongoDB dengan kontrol akses.
mongod --auth --port 27017 --dbpath /data/db1
Otentikasi sebagai administrator pengguna.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
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" } ]
}
)
Untuk MongoDB yang lebih lama dari 2.6, perintah untuk menambahkan pengguna root adalah addUser
(misalnya)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
. Memulai 2.6 dan di versi 3.4.x saat ini Anda dapat membuat pengguna dengan db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
Selain jawaban yang diberikan sebelumnya, satu opsi adalah mengikuti pendekatan 'pengecualian localhost' untuk membuat pengguna pertama jika db Anda sudah dimulai dengan kontrol akses ( --auth
sakelar). 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.