Một khả năng khác: Khi bạn tạo người dùng, bạn có thể đã vô tình nhập vào usemột cơ sở dữ liệu khác với adminhoặc khác với cơ sở bạn muốn. Bạn cần đặt --authenticationDatabasecơ sở dữ liệu mà người dùng đã thực sự được tạo.
mongodbdường như đưa bạn vào testcơ sở dữ liệu theo mặc định khi bạn mở vỏ, vì vậy bạn cần phải viết --authenticationDatabase testchứ không phải là --authenticationDatabase adminnếu bạn vô tình bị useing testkhi bạn chạy db.createUser(...).
Giả sử bạn có quyền truy cập vào máy đang chạy phiên bản mongodb, y có thể vô hiệu hóa ủy quyền trong /etc/mongod.conf(nhận xét authorizationđược lồng trong bảo mật), sau đó khởi động lại máy chủ của bạn, rồi chạy:
mongo
show users
Và bạn có thể nhận được một cái gì đó như thế này:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Chú ý rằng dbgiá trị bằng test. Đó là bởi vì khi tôi tạo người dùng, lần đầu tiên tôi không chạy use adminhoặc use desiredDatabaseName. Vì vậy, bạn có thể xóa người dùng với db.dropUser("myusername")và sau đó tạo một người dùng khác trong cơ sở dữ liệu mong muốn của bạn như sau:
use desiredDatabaseName
db.createUser(...)
Hy vọng rằng điều đó sẽ giúp ích cho ai đó từng ở vị trí của tôi với tư cách là một noob với công cụ này.