Saya mencoba menambahkan otorisasi ke MongoDB saya.
Saya melakukan semua ini di Linux dengan MongoDB 2.6.1.
File mongod.conf saya berada dalam format kompatibilitas yang lama
(beginilah cara menginstalnya).
1) Saya membuat pengguna admin seperti yang dijelaskan di sini dalam (3)
http://docs.mongodb.org/manual/tutorial/add-user-administrator/
2) Saya kemudian mengedit mongod.conf dengan menghapus komentar pada baris ini
auth = true
3) Akhirnya saya reboot layanan mongod dan saya mencoba masuk dengan:
/usr/bin/mongo localhost:27017/admin -u sa -p pwd
4) Saya dapat terhubung tetapi dikatakan ini saat terhubung.
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
5) Sekarang tampaknya sa
pengguna yang saya buat ini tidak memiliki izin sama sekali.
root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
"$err" : "not authorized for query on admin.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>
Apa masalahnya? Saya mengulangi seluruh prosedur ini 3 kali dan
saya pikir saya melakukan semuanya seperti yang ditentukan dalam dokumen MongoDB. Tapi itu tidak berhasil.
Saya mengharapkan sa
pengguna ini diotorisasi untuk melakukan apa saja sehingga
ia kemudian dapat membuat pengguna lain dan memberi mereka izin yang lebih spesifik.
Jawaban:
Saya juga menggaruk-garuk kepala saya di masalah yang sama, dan semuanya bekerja setelah saya menetapkan peran menjadi root saat menambahkan pengguna admin pertama.
Jika Anda telah membuat
admin
pengguna, Anda dapat mengubah peran seperti ini:Untuk referensi pengaturan otentikasi lengkap, lihat langkah - langkah yang telah saya susun setelah berjam-jam penelitian melalui internet.
sumber
userAdminAnyDatabase
bukanroot
?db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
dan itu membuat saya bingung. Saya tidak berwenang untuk menjalankan perintah, namun saya dapat menjalankan perintah untuk membuat diri saya root, dan kemudian jalankan perintah itu. Sangat aneh: Sdb.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
tidak bekerja, pastikan Anda beralih kembali keuse admin
... memiliki masalah yang sama, setelah saya beralih kembali itu berfungsi seperti pesonaAgak membingungkan - saya yakin Anda harus memberikan diri Anda readWrite untuk meminta basis data. Seorang pengguna dengan dbadmin atau useradmin dapat melakukan admin database (termasuk memberikan hak tambahan kepada diri Anda sendiri) tetapi tidak dapat melakukan kueri atau menulis data.
jadi berikan diri Anda readWrite dan Anda harus baik -
http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite
sumber
Mungkin contoh cepat tentang cara mengubah pengguna saat ini akan membantu seseorang. Inilah yang sebenarnya saya cari.
Mengikuti saran dari @JohnPetrone saya menambahkan peran readWrite ke pengguna admin saya dengan grantRolesToUser
sumber
Anda dapat mencoba: Menggunakan flag --authenticationDatabase membantu.
sumber
Saya tahu jawaban ini datang sangat terlambat di utas ini tetapi saya harap Anda memeriksanya.
Alasan Anda mendapatkan kesalahan itu didasarkan pada peran spesifik yang Anda berikan kepada pengguna, yang telah Anda kumpulkan sekarang, dan ya memberi pengguna peran itu
root
akan menyelesaikan masalah Anda, tetapi Anda harus terlebih dahulu memahami apa peran ini dilakukan dengan tepat sebelum memberikannya kepada mereka. kepada pengguna.Dalam tutorial, Anda memberi pengguna
userAdminAnyDatabase
peran yang pada dasarnya memberi pengguna kemampuan untuk mengelola pengguna dari semua basis data Anda. Apa yang Anda coba lakukan dengan pengguna Anda berada di luar definisi perannya.The
root
peran memiliki peran ini termasuk di dalamnya definisi sertareadWriteAnyDatabase
,dbAdminAnyDatabase
dan peran lainnya sehingga superuser (pada dasarnya karena Anda dapat melakukan apa-apa dengan itu).Anda dapat memeriksa definisi peran untuk melihat peran mana yang perlu Anda berikan kepada pengguna untuk menyelesaikan tugas-tugas tertentu. https://docs.mongodb.com/manual/reference/built-in-roles/ Tidak disarankan untuk membuat semua pengguna Anda yang super :)
sumber
show collections
) Anda harus memberikannya kemampuan dan tidak ada yang lainroles: [ { role: "read", db: "admin" } ]
. Perhatikan bahwa peran di sini dibaca, ini khusus basis data dan Anda tidak dapat melakukan apa pun selain itu. Lihat tautan ini untuk peran lainnya docs.mongodb.com/manual/reference/built-in-rolesIni pertanyaan sederhana.
atau
sumber
Saya memiliki masalah yang sama di sini di lingkungan Windows: Saya telah menginstal Bitnami DreamFactory dan juga menginstal MongoDb lain yang dimulai pada boot sistem. Saya menjalankan MongoDbService saya (yang dimulai tanpa kesalahan) tetapi saya perhatikan setelah kehilangan banyak waktu bahwa saya sebenarnya terhubung dengan Layanan MongoDb Bitnami. Silakan, lihat apakah tidak ada contoh lain dari mongoDB yang berjalan di server Anda.
Semoga berhasil!
sumber
Selain itu, perhatikan bahwa jika klien shell mongo Anda gagal terhubung dengan benar ke
mongod
instance, Anda dapat menerima kesalahan "Permission Denied" tersebut.Pastikan klien Anda membuka koneksi dengan memeriksa port koneksi, tetapi juga bahwa port yang Anda gunakan
mongod
tidak digunakan. Anda dapat mengatur port yang berbeda dengan menggunakan--port <port>
parameter di shell dan proses.sumber
Saya mengalami masalah ini karena nama host di Kompas MongoDB saya menunjuk ke admin sebagai ganti proyek saya. Diperbaiki dengan menambahkan / projectname setelah nama host :) Coba ini:
Gunakan string koneksi yang sama dalam kode Anda juga:
Semoga berhasil.
sumber
sumber
Setuju bahwa Anda harus mendapatkan autentikasi ke admin db dan memerlukan setidaknya peran dengan hak istimewa yang benar yang akan menghindari 'pengecualian host lokal' dari DB (ini untuk host mongoDB di lokasi), meskipun Anda sudah menyiapkan semuanya & masih mendapatkan pengecualian tidak sah pada hampir setiap perintah, saat mengakses mongoDB yang dibuat menggunakan Mongo Atlas , maka di sini adalah tempat di mana Anda mungkin tahu alasannya, mengapa:
/dba/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tier-cluster?newreg=471a9a261026248d78d4ca74a87e7a115
dan juga periksa ini jika Anda meng-host mongoDB di mongo Atlas :
https://docs.atlas.mongodb.com/unsupported-commands/
sumber
sumber
Saya mengikuti langkah-langkah ini pada Centos 7 untuk MongoDB 4.2. (Pengguna jarak jauh)
Perbarui file mongod.conf
Mulai iblis layanan MongoDB
Buka shell MongoDB
Jalankan perintah ini pada shell
Pengguna root jarak jauh telah dibuat. Sekarang Anda dapat menguji koneksi database ini dengan menggunakan alat GUI MongoDB dari mesin dev Anda. Seperti Robo 3T
sumber
Ini mungkin karena Anda belum menyetel noAuth = true di mongodb.conf
Setelah mengatur ini restart layanan menggunakan
layanan mongod restart
sumber