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 use
một cơ sở dữ liệu khác với admin
hoặc khác với cơ sở bạn muốn. Bạn cần đặt --authenticationDatabase
cơ sở dữ liệu mà người dùng đã thực sự được tạo.
mongodb
dường như đưa bạn vào test
cơ 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 test
chứ không phải là --authenticationDatabase admin
nếu bạn vô tình bị use
ing test
khi 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 db
giá 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 admin
hoặ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.