Wow rất nhiều câu trả lời phức tạp / khó hiểu ở đây.
Điều này là của v3.4 .
Câu trả lời ngắn.
1) Khởi động MongoDB mà không cần kiểm soát truy cập.
mongod --dbpath /data/db
2) Kết nối với ví dụ.
mongo
3) Tạo người dùng.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Dừng phiên bản MongoDB và khởi động lại với điều khiển truy cập.
mongod --auth --dbpath /data/db
5) Kết nối và xác thực là người dùng.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Câu trả lời dài: Đọc này nếu bạn muốn hiểu đúng.
Nó thực sự đơn giản. Tôi sẽ câm dưới đây https://docs.mongodb.com/manual/tutorial/enable-authentication/
Nếu bạn muốn tìm hiểu thêm về những vai trò thực sự đọc thêm tại đây: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Khởi động MongoDB mà không cần kiểm soát truy cập.
mongod --dbpath /data/db
2) Kết nối với ví dụ.
mongo
3) Tạo quản trị viên người dùng. Sau đây tạo một quản trị viên người dùng trong admin
cơ sở dữ liệu xác thực. Người sử dụng là một dbOwner
trong những some_db
cơ sở dữ liệu và không qua admin
cơ sở dữ liệu, điều này rất quan trọng để nhớ.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Hoặc nếu bạn muốn tạo một quản trị viên là quản trị viên trên bất kỳ cơ sở dữ liệu nào:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Dừng phiên bản MongoDB và khởi động lại với điều khiển truy cập.
mongod --auth --dbpath /data/db
5) Kết nối và xác thực là quản trị viên người dùng đối với admin
cơ sở dữ liệu xác thực, KHÔNG hướng tới some_db
cơ sở dữ liệu xác thực. Quản trị viên người dùng đã được tạo trong admin
cơ sở dữ liệu xác thực, người dùng không tồn tại trong some_db
cơ sở dữ liệu xác thực.
use admin
db.auth("myDbOwner", "abc123")
Bây giờ bạn được chứng thực là một dbOwner
trong những some_db
cơ sở dữ liệu. Vì vậy, bây giờ nếu bạn muốn đọc / ghi / làm công cụ trực tiếp tới some_db
cơ sở dữ liệu, bạn có thể thay đổi nó.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Thêm về vai trò: https://docs.mongodb.com/manual/reference/built-in-roles/
Nếu bạn muốn tạo thêm người dùng không phải là quản trị viên người dùng và những người dùng bình thường tiếp tục đọc bên dưới.
6) Tạo một người dùng bình thường. Người dùng này sẽ được tạo trong some_db
cơ sở dữ liệu xác thực bên dưới.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Thoát khỏi vỏ mongo, kết nối lại, xác thực là người dùng.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})