全部产品
Search
文档中心

:Bagaimana cara saya menangani masalah login untuk mongo shell?

更新时间:Nov 09, 2025

Anda dapat menggunakan DMS atau mongo shell untuk masuk ke konsol ApsaraDB for MongoDB. Topik ini menjelaskan masalah umum yang mungkin terjadi saat menggunakan mongo shell untuk masuk ke ApsaraDB for MongoDB beserta solusi yang sesuai.

Pesan "upaya koneksi gagal" ditampilkan

Masalah:

#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u test -p xxx
MongoDB shell version: 3.2.3
DB Prefix:
connecting to: 10.1.2.8:3717/admin
2016-05-31T15:25:58.940+0800 W NETWORK  Failed to connect to 10.*.*.8:3717 after 5000 milliseconds, giving up.
2016-05-31T15:25:58.943+0800 E QUERY    Error: couldn't connect to server 10.*.*.8:3717 (10.1.2.8), connection attempt failed
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

Kemungkinan penyebab

Solusi

Instance Elastic Compute Service (ECS) tempat Anda menjalankan perintah mongo shell dan instance ApsaraDB for MongoDB tidak berada di virtual private cloud (VPC) yang sama atau memiliki jenis jaringan yang berbeda.

Metode pemecahan masalah tambahan: Anda dapat menjalankan perintah Telnet seperti telnet dds-ali123456789.mongodb.rds.aliyuncs.com 3717 untuk memeriksa apakah instance ApsaraDB for MongoDB dapat diakses.

Test the portGambar ini menunjukkan bahwa URL dapat diselesaikan dan port 3717 berfungsi sebagaimana mestinya.

Pesan "Autentikasi gagal" ditampilkan

Masalah:

#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717  --authenticationDatabase admin -u test -p xxx
MongoDB shell version: 3.2.3
connecting to: 10.1.2.8:3717/test
2016-05-31T15:50:18.623+0800 E QUERY    Error: 18 Authentication failed.
    at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
    at (auth):6:8
    at (auth):7:2 at src/mongo/shell/db.js:1271
exception: login failed

Kemungkinan Penyebab

Solusi

Nama pengguna yang digunakan untuk masuk database salah.

Masuk ke database dengan nama pengguna yang benar.

Kata sandi yang digunakan untuk masuk database salah.

Masuk ke database dengan kata sandi yang benar.

Pengguna tidak sesuai dengan database autentikasi.

Cocokkan pengguna dengan database autentikasi. Sebagai contoh, pengguna root adalah pengguna dari database admin, sehingga database autentikasi harus ditetapkan sebagai admin jika Anda ingin menggunakan pengguna ini untuk masuk ke database.

Versi klien sudah usang.

Pastikan versi mongo shell adalah 3.0 atau lebih baru. Untuk informasi tentang cara menginstal mongo shell, lihat Instal MongoDB. Untuk persyaratan versi klien dalam bahasa pemrograman lainnya, lihat Dokumentasi kompatibilitas driver.

Kesalahan jaringan terjadi saat Anda menjalankan perintah isMaster

Masalah:

#mongo --host ali12345678.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase test -u test -p xxxxxx
MongoDB shell version v3.4.10
connecting to: mongodb:ali1234567878.mongodb.rds.aliyuncs.com:3717/
2018-12-18T14:26:11.946+0800 E QUERY    [thread1] Error: network error while attempting to run command 'isMaster' on host 'ft12345678.mongodb.rds.aliyuncs.com:3717'  :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

Kemungkinan penyebab

Solusi

Alamat IP instance ECS tidak ada dalam daftar putih instance ApsaraDB for MongoDB.

Tambahkan alamat IP instance ECS ke daftar putih instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, lihat Konfigurasi daftar putih atau grup keamanan ECS untuk instance ApsaraDB for MongoDB.

Pesan "Timeout saat menerima pesan" ditampilkan

org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout saat menerima pesan; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout saat menerima pesan

Kemungkinan Penyebab

Solusi

Query lambat yang abnormal memakan sumber daya instance dan menyebabkan pemanfaatan CPU melonjak atau bahkan mencapai puncak.

Periksa query lambat. Kami sarankan Anda membuat indeks untuk optimasi. Untuk informasi lebih lanjut, lihat Menangani masalah pemanfaatan CPU tinggi pada sebuah instance.

Konfigurasi kolam koneksi aplikasi, seperti pengaturan timeout, salah.

Untuk informasi lebih lanjut, lihat Topik ini menjelaskan cara memeriksa penggunaan koneksi dan menentukan jumlah maksimum koneksi untuk kumpulan koneksi. Anda dapat menggunakan Data Management (DMS) atau mongo shell untuk mengakses database ApsaraDB for MongoDB. Tanyakan jumlah koneksi saat ini Jumlah maksimum koneksi bervariasi tergantung pada spesifikasi instance ApsaraDB for MongoDB yang Anda beli. Untuk informasi lebih lanjut, lihat . Jumlah maksimum koneksi berlaku untuk setiap node dalam instance tersebut. Sebagai contoh, jika Anda membeli instance set replika tiga node dengan 1 vCPU dan 2 GiB memori, hingga 500 koneksi diizinkan untuk masing-masing node utama dan sekunder dari instance tersebut. Node tersembunyi tidak menyediakan layanan ke sistem eksternal karena arsitektur khususnya. Gunakan mongo shell untuk terhubung ke instance. Untuk informasi lebih lanjut, lihat Koneksi Instance. Kemudian, jalankan perintah db.serverStatus().connections. mgset-123456:PRIMARY> db.serverStatus().connections { "current" : 1, "available" : 999, "internal_current" : 10, "internal_available" : 990, "totalCreated" : 632 } Catat parameter berikut beserta nilainya: "current": jumlah koneksi yang telah dibuat. "available": jumlah koneksi yang tersedia. Tanyakan alamat IP sumber dari koneksi saat ini Gunakan mongo shell untuk terhubung ke instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, lihat Koneksi Instance. Kemudian, beralihlah ke database admin. use admin Jalankan perintah db.runCommand({currentOp: 1, $all: true}).mgset-123456:PRIMARY> db.runCommand({currentOp: 1, $all:[{"active" : true}]}) Anda dapat memeriksa alamat IP sumber dari setiap koneksi dalam keluaran perintah. Dengan cara ini, Anda dapat mengetahui jumlah koneksi yang dibuat antara setiap terminal dan instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, kunjungi db.currentOp(). Batasi jumlah koneksi Anda dapat menggunakan string koneksi URI untuk terhubung ke instance ApsaraDB for MongoDB. Jika Anda menggunakan string koneksi URI untuk mengakses database, tambahkan &maxPoolSize=<integer> ke URI. Parameter maxPoolSize menentukan jumlah maksimum koneksi dalam kumpulan koneksi. Contoh berikut menunjukkan cara menggunakan mongo shell untuk terhubung ke instance dengan mengatur jumlah maksimum koneksi dalam kumpulan koneksi menjadi 10. Akun database adalah test dan database adalah admin. mongo "mongodb://test:****@dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&maxPoolSize=10" Untuk informasi lebih lanjut tentang cara membatasi jumlah koneksi dalam kumpulan koneksi untuk klien dalam berbagai bahasa pemrograman, kunjungi Mulai Pengembangan dengan MongoDB.

Skenario koneksi umum