Bạn đã tạo người dùng ở đâu, tức là trong cơ sở dữ liệu nào? Thông thường, người dùng được tạo trong cơ sở dữ liệu admin
. Khi bạn kết nối với MongoDB thì bạn phải luôn chỉ định cơ sở dữ liệu xác thực và cơ sở dữ liệu bạn muốn sử dụng.
Các giá trị mặc định hơi khó hiểu và không thực sự nhất quán, hãy xem bảng này để có cái nhìn tổng quan:
+----------------------------------------------------------------------------------------+
|Connection string | Authentication | Current |
| | database | database |
+----------------------------------------------------------------------------------------+
|mongo -u <...> -p <...> --authenticationDatabase admin myDB | admin | myDB |
|mongo -u <...> -p <...> myDB | myDB | myDB |
|mongo -u <...> -p <...> --authenticationDatabase admin | admin | test |
|mongo -u <...> -p <...> localhost:27017 | test | test |
|mongo -u <...> -p <...> --host localhost:27017 | admin | test |
|mongo -u <...> -p <...> | admin | test |
+----------------------------------------------------------------------------------------+
Nếu bạn muốn sử dụng chuỗi Kết nối ở định dạng URI, nó sẽ tương ứng với những chuỗi sau:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
Tôi đoán bạn đã tạo người dùng trong admin
cơ sở dữ liệu nhưng vì bạn không chỉ định xác thực Cơ sở dữ liệu trong khi kết nối, Mongo mặc định nó thành mydatabase
nơi nó không thành công, vì người dùng không tồn tại trong cơ sở dữ liệu mydatabase
.