MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menghubungkan ke database MongoDB


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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose - Simpan array string

  2. Parameter kueri penelusuran opsional luwak?

  3. Kembalikan sejumlah catatan terbatas dari jenis tertentu, tetapi jumlah catatan lain yang tidak terbatas?

  4. Memasukkan array besar objek di mongodb dari nodejs

  5. ECONNREFUSED kesalahan saat menghubungkan ke mongodb dari node.js