Sesuai MongoDB BOL
Aktifkan Auth Dengan kontrol akses diaktifkan, pastikan Anda memiliki pengguna dengan userAdmin atau userAdminAnyDatabase peran dalam database admin. Pengguna ini dapat mengatur pengguna dan peran seperti: membuat pengguna, memberikan atau mencabut peran dari pengguna, dan membuat atau memodifikasi peran pabean.
Anda dapat membuat pengguna baik sebelum atau setelah mengaktifkan kontrol akses. Jika Anda mengaktifkan kontrol akses sebelum membuat pengguna apa pun, MongoDB menyediakan pengecualian hosting lokal yang memungkinkan Anda membuat administrator pengguna di basis data admin. Setelah dibuat, Anda harus mengotentikasi sebagai administrator pengguna untuk membuat pengguna tambahan sesuai kebutuhan.
Prosedur
Berikut adalah prosedur berikut yang dapat Anda gunakan Enable Auth
. Pertama menambahkan administrator pengguna ke instance MongoDB yang berjalan tanpa kontrol akses dan kemudian mengaktifkan kontrol akses.
mongod --port 27017 --dbpath /data/db1
C:\Program Files\MongoDB\Server\3.6\bin>mongod --auth --port 27017 --dbpath /data/db1
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] MongoDB starting : pid=8048 port=27017 dbpath=/data/db1 64-bit host=ACSD140013
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] db version v3.6.0
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1u-fips 22 Sep 2016
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] allocator: tcmalloc
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] modules: none
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] build environment:
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] distmod: 2008plus-ssl
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] distarch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] target_arch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] options: { net: { port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/data/db1" } }
2018-01-02T00:04:21.044-0700 I - [initandlisten] Detected data files in /data/db1 created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-01-02T00:04:21.044-0700 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1508M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-01-02T00:04:21.557-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:556397][8048:140720576475904], txn-recover: Main recovery loop: starting at 1/35584
2018-01-02T00:04:21.677-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:676479][8048:140720576475904], txn-recover: Recovering log 1 through 2
2018-01-02T00:04:21.792-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:792524][8048:140720576475904], txn-recover: Recovering log 2 through 2
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2018-01-02T00:04:23.009-0700 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] ** WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] See http://dochub.mongodb.org/core/wt-windows-system-file-cache
2018-01-02T00:04:23.012-0700 I CONTROL [initandlisten]
2018-01-02T10:04:23.320+0300 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db1/diagnostic.data'
2018-01-02T10:04:23.322+0300 I NETWORK [initandlisten] waiting for connections on port 27017
2018-01-02T10:05:09.214+0300 I NETWORK [listener] connection accepted from 127.0.0.1:64482 #1 (1 connection now open)
Hubungkan ke instance
Misalnya, hubungkan mongo
shell ke instance.
mongo --port 27017
Tentukan opsi baris perintah tambahan yang sesuai untuk menghubungkan mongo
shell ke penyebaran Anda, seperti --host
.
Buat administrator pengguna
Misalnya di sini di database admin, tambahkan pengguna dengan userAdminAnyDatabase
peran. Misalnya, berikut ini membuat pengguna myUserAdmin
di database admin :
> use admin
switched to db admin
> use admin
switched to db admin
> db.createUser(
... {
... user: "mongoadmin",
... pwd: "mongoadmin",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "mongoadmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
CATATAN: Basis data tempat Anda membuat pengguna (dalam contoh ini, admin) adalah basis data otentikasi pengguna. Meskipun pengguna akan mengautentikasi ke database ini, pengguna dapat memiliki peran dalam database lain; yaitu database otentikasi pengguna tidak membatasi hak pengguna.
Putuskan sambungan mongo
shell.
Mulai ulang instance MongoDB dengan kontrol akses
mongod
Mulai ulang instance dengan opsi baris perintah --auth atau, jika menggunakan file konfigurasi, pengaturan security.authorization .
mongod --auth --port 27017 --dbpath /data/db1
Klien yang terhubung ke instance ini sekarang harus mengautentikasi diri mereka sebagai MongoDB
pengguna. Klien hanya dapat melakukan tindakan yang ditentukan oleh peran yang ditugaskan kepada mereka.
Sambungkan dan otentikasi sebagai administrator pengguna
Dengan menggunakan mongo
shell, Anda dapat:
Terhubung dengan otentikasi dengan mengirimkan kredensial pengguna, atau
Hubungkan dulu otentikasi mulut , dan kemudian
keluarkan metode db.auth () untuk mengotentikasi.
Untuk mengotentikasi selama koneksi Mulai mongo
shell dengan -u <username>, -p <password>, and the --authenticationDatabase <database>
opsi baris perintah:
C:\Program Files\MongoDB\Server\3.6\bin>mongo --port 27017 -u "mongoadmin" -p "mongoadmin" --authenticationDatabase "admin"
MongoDB shell version v3.6.0
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
2018-01-02T10:05:09.248+0300 I STORAGE [main] In File::open(), CreateFileW for 'H:\\.mongorc.js' failed with Access is denied.
Untuk mengautentikasi setelah tersambung
Hubungkan mongo
shell ke mongod
:
mongo --port 27017
Beralih ke database otentikasi (dalam hal ini, admin), dan gunakan metode db.auth (,) untuk mengotentikasi:
> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>