Pengantar
Setelah Anda memiliki server MongoDB yang tersedia, salah satu tindakan pertama dan paling umum yang perlu Anda lakukan adalah menghubungkan ke database yang sebenarnya. Hal ini memerlukan koordinasi untuk memastikan bahwa database dikonfigurasi dengan cara yang memungkinkan klien Anda terhubung dan mengautentikasi.
Ini berarti Anda harus memahami cara menghubungkan ke database MongoDB Anda dengan menyediakan lokasi server, parameter koneksi, dan kredensial yang benar. Dalam panduan ini, kami akan fokus pada cara menghubungkan ke database dari sisi klien menggunakan mongo
Klien shell MongoDB, dirancang terutama untuk sesi interaktif dengan database Anda.
Dalam panduan pendamping, Anda dapat mengetahui cara mengonfigurasi pengaturan otentikasi MongoDB agar sesuai dengan kebutuhan Anda. Pertimbangkan membaca kedua bagian untuk gambaran lengkap tentang bagaimana otentikasi diterapkan dari perspektif kedua belah pihak.
Informasi dasar tentang mongo
klien
mongo
client adalah klien JavaScript baris perintah untuk menghubungkan, mengontrol, dan berinteraksi dengan server database MongoDB. Dalam banyak hal, ini adalah cara paling sederhana untuk terhubung dan mulai menggunakan database MongoDB Anda karena sudah termasuk dalam instalasi MongoDB dan tersedia di semua platform populer. mongo
klien sangat berguna untuk melakukan konfigurasi awal dan untuk sesi interaktif di mana Anda ingin menjelajahi data Anda atau mengulangi kueri berdasarkan hasil awal.
Cara Anda terhubung dengan mongo
shell tergantung pada konfigurasi server MongoDB dan opsi yang tersedia untuk Anda autentikasi ke akun. Di bagian berikut, kita akan membahas beberapa opsi koneksi dasar. Demi kejelasan, kami akan membedakan antara koneksi lokal dan jarak jauh:
- koneksi lokal :koneksi di mana klien dan instance MongoDB berada di server yang sama
- koneksi jarak jauh :tempat klien terhubung ke instance MongoDB yang dapat diakses jaringan yang berjalan di komputer lain
Mari kita mulai dengan menghubungkan ke database dari komputer yang sama.
Menghubungkan ke database lokal dengan mongo
Tanpa argumen apa pun, mongo
perintah mencoba untuk terhubung ke instance MongoDB lokal.
Untuk melakukannya, ia mencoba menyambung ke port 27017 pada alamat loopback lokal:127.0.0.1:27017
. Ini adalah salah satu antarmuka yang mengikat server MongoDB dalam konfigurasi defaultnya (MongoDB juga dapat diakses melalui file soket lokal).
Anda dapat terhubung ke server MongoDB lokal yang berjalan dengan konfigurasi default dengan mengetik:
mongo
Pada koneksi yang berhasil, Anda mungkin akan melihat serangkaian pesan yang cukup panjang diikuti oleh prompt shell MongoDB:
MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting: 2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >
Output menunjukkan log yang dihasilkan oleh mongo
perintah saat membuat koneksi, diikuti oleh beberapa peringatan yang dihasilkan oleh server MongoDB saat startup. Terakhir, ada pemberitahuan tentang layanan pemantauan MongoDB yang dapat Anda pilih untuk dimanfaatkan atau dinonaktifkan.
Salah satu peringatan dari server MongoDB menunjukkan bahwa kontrol akses tidak diaktifkan saat ini. Inilah alasan kami dapat terhubung tanpa memberikan kredensial atau detail autentikasi lainnya.
Jika Anda terhubung ke server MongoDB lokal yang memiliki telah dikonfigurasi dengan kontrol akses, Anda perlu memberikan informasi tambahan untuk menghubungkan. Anda harus memberikan setidaknya nama pengguna dan sandi untuk terhubung menggunakan --username
associated yang terkait dan --password
pilihan:
mongo --username <mongo_username> --password
Menempatkan --password
opsi di akhir dan tidak memberikan kata sandi sebaris menunjukkan bahwa Anda ingin MongoDB meminta kata sandi sebagai gantinya. Ini lebih aman daripada memberikan kata sandi dalam perintah itu sendiri karena itu mungkin terlihat atau dapat dipulihkan melalui riwayat shell, daftar proses, dan mekanisme lainnya.
Server MongoDB akan meminta Anda untuk memasukkan kata sandi pengguna sebelum menghubungkan ke database:
MongoDB shell version v.4.4.6Enter password:
Setelah berhasil mengautentikasi, Anda harus terhubung ke database dan dapat melanjutkan sesi Anda seperti biasa.
Anda juga dapat memberikan informasi ini dengan meneruskan string koneksi alih-alih menggunakan --username
dan --password
pilihan:
mongo "mongodb://<mongo_username>:@127.0.0.1"
Karena kami telah menunjukkan bahwa pengguna memiliki sandi dengan <username>:
sintaks, tetapi belum menyediakannya, mongo
shell akan meminta kata sandi.
Atau, Anda juga dapat mengautentikasi setelah terhubung dengan mongo
normal perintah dengan menggunakan db.auth
perintah.
Pertama, sambungkan ke database MongoDB tanpa memberikan kredensial:
mongo
Anda akan diberikan prompt perintah seperti biasa, tetapi jika kontrol akses diaktifkan, Anda tidak akan memiliki izin untuk melakukan banyak tindakan sampai Anda mengautentikasi. Misalnya, show dbs
perintah kemungkinan akan kosong karena Anda tidak memiliki akses untuk menanyakan database yang tersedia:
show dbs
Untuk mengautentikasi, pertama, pilih database tempat pengguna Anda ditetapkan. Paling sering, itu adalah admin
basis data:
use admin
Setelah itu, gunakan db.auth()
untuk memberikan nama pengguna Anda dan meminta permintaan sandi:
db.auth({user: "<mongo_username>", passwordPrompt()})
Anda akan dimintai kata sandi akun pengguna seperti sebelumnya:
Enter password:
Jika berhasil maka server akan menampilkan 1
:
Enter password:1
Anda sekarang akan memiliki akses reguler dari pengguna yang Anda autentikasi sebagai:
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
Anda dapat melihat daftar pengguna dan peran yang diautentikasi yang terkait dengan koneksi saat ini kapan saja dengan mengetik:
db.runCommand("connectionStatus")
{ "authInfo" : { "authenticatedUsers" : [ { "user" : "root", "db" : "admin" } ], "authenticatedUserRoles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }, "ok" : 1}
Menghubungkan ke database jarak jauh
Jika Anda ingin terhubung ke database MongoDB jarak jauh, Anda harus memberikan beberapa detail tambahan saat menggunakan mongo
cangkang.
Secara khusus, Anda harus menyertakan --host
opsi dan berpotensi --port
opsi juga jika server MongoDB mendengarkan pada port non-default. Di hampir semua kasus, Anda juga harus memberikan --user
dan --password
opsi untuk mengautentikasi ke server jauh juga.
Oleh karena itu, struktur dasar perintah saat menghubungkan ke database MongoDB jarak jauh terlihat seperti ini:
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password
Seperti disebutkan di bagian menghubungkan ke database lokal, menempatkan --password
opsi di akhir dan tidak memberikan kata sandi sebaris menunjukkan bahwa Anda menginginkan mongo
shell untuk meminta kata sandi sebagai gantinya. Ini lebih aman daripada memberikan kata sandi dalam perintah itu sendiri karena itu mungkin terlihat atau dapat dipulihkan melalui riwayat shell, daftar proses, dan mekanisme lainnya.
Server MongoDB akan meminta Anda untuk memasukkan kata sandi pengguna sebelum menghubungkan ke database:
MongoDB shell version v.4.4.6Enter password:
Setelah berhasil mengautentikasi, Anda harus terhubung ke database dan dapat melanjutkan sesi Anda seperti biasa.
Anda juga dapat memberikan informasi ini dengan meneruskan string koneksi alih-alih menggunakan --host
, --port
, --username
dan --password
pilihan:
mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"
Karena kami telah menunjukkan bahwa pengguna memiliki sandi dengan <username>:
sintaks, tetapi belum menyediakannya, mongo
shell akan meminta kata sandi.
Menyesuaikan konfigurasi autentikasi server MongoDB
Jika Anda ingin mengubah aturan yang menentukan bagaimana pengguna dapat mengautentikasi ke instans MongoDB Anda, Anda dapat melakukannya dengan memodifikasi konfigurasi server Anda. Anda dapat mengetahui cara mengubah konfigurasi autentikasi MongoDB di artikel ini.
Kesimpulan
Dalam panduan ini, kami membahas otentikasi MongoDB dari sisi klien. Kami mendemonstrasikan cara menggunakan mongo
shell untuk terhubung ke instance database lokal dan jarak jauh menggunakan berbagai metode.
Mengetahui cara menghubungkan ke berbagai instans MongoDB sangat penting saat Anda mulai mengerjakan sistem database. Anda dapat menjalankan instans MongoDB lokal untuk pengembangan yang tidak memerlukan autentikasi khusus, tetapi database Anda dalam staging dan produksi hampir pasti memerlukan autentikasi. Mampu mengautentikasi dalam kedua kasus akan memungkinkan Anda bekerja dengan baik di lingkungan yang berbeda.