Các phương thức quản lý người dùng trong MongoDB
Tên phương thức | Mô tả |
---|---|
db.auth() |
Xác thực người dùng vào cơ sở dữ liệu |
db.changeUserPassword() |
Thay đổi mật khẩu của người dùng hiện tại |
db.createUser() |
Tạo người dùng mới |
db.dropUser() |
Xóa một người dùng |
db.dropAllUsers() |
Xóa tất cả người dùng được liên kết với cơ sở dữ liệu |
db.getUser() |
Trả về thông tin về người dùng được chỉ định |
db.getUsers() |
Trả về thông tin về tất cả người dùng được liên kết với cơ sở dữ liệu |
db.grantRolesToUser() |
Cấp một vai trò và các đặc quyền của nó cho người dùng |
db.removeUser() |
Không được chấp nhận. Xóa người dùng khỏi cơ sở dữ liệu |
db.revokeRolesFromUser() |
Xóa vai trò khỏi người dùng |
db.updateUser() |
Cập nhật dữ liệu người dùng |
passwordPrompt() |
Lời nhắc mật khẩu thay thế cho việc chỉ định mật khẩu trực tiếp trong các phương pháp quản lý / xác thực người dùng mongosh khác nhau |
Tạo tài khoản trong MongoDB
Tạo người dùng quản trị trong MongoDB được thực hiện bằng cách sử dụng phương thức db.createUser()
. Với cú pháp như sau:
db.createUser(user, writeConcern)
Các tham số:
- user: kiểu tài liệu (document). Tài liệu có xác thực và thông tin truy cập về người dùng để tạo.
- writeConcern: kiểu tài liệu (document) Không bắt buộc. Mức độ quan tâm đối với việc sửa đổi. Tài liệu writeConcern nhận các trường giống như lệnh getLastError.
Ví dụ sau đây cho thấy điều này có thể được thực hiện như thế nào.
db.createUser({
user: "sinhnx",
pwd: "your-password",
roles: [{role: "userAdminAnyDatabase" , db:"admin"}]
})
các tham số:
user
: Xác định tên người dùngpwd
: Xác định mật khẩu của người dùngroles
: Xác định vai trò của người dùng khi đăng nhập vào tài khoản (với các tham sốuser
vàpwd
ở trên)userAdminAnyDatabase
: cho phép người dùng có đặc quyền quản trị đối với tất cả cơ sở dữ liệu trong MongoDBdb
: chỉ định cơ sở dữ liệu quản trị là cơ sở dữ liệu Meta đặc biệt bên trong MongoDB lưu giữ thông tin cho người dùng này
Để tạo một người dùng sẽ quản lý một cơ sở dữ liệu duy nhất, chúng ta có thể sử dụng lệnh tương tự như đã đề cập ở trên nhưng chúng ta chỉ cần sử dụng tùy chọn “userAdmin
”.
db.createUser({
user: "employee-admin",
pwd: "password",
roles:[{role: "userAdmin" , db:"employee"}]
})
Ví dụ sau sử dụng vai trò "read" chỉ cho phép truy cập chỉ đọc vào cơ sở dữ liệu và sau đó có vai trò "readWrite" cung cấp quyền truy cập có thể đọc và ghi vào cơ sở dữ liệu cho người dùng cụ thể
db.createUser({
user: "sinhnx",
pwd: "sinhnx.dev",
roles:[ { role: "read" , db:"Marketing"},
{ role: "readWrite" , db:"Sales"}
} ]
})
Bắt đầu từ phiên bản MongoDB 4.2 trở về sau thì có thể sử dụng thêm phương thức passwordPrompt()
để nhập mật khẩu thay vì xác định trước mật khẩu ngay trong câu lệnh:
db.createUser({
user:"sinhnx",
pwd:passwordPrompt(),
roles:[{role:"readWrite", db:"test"}]
})
Đổi mật khẩu người dùng
Sử dụng phương thức db.changeUserPassword() với cú pháp như sau:
db.changeUserPassword(username, password)
Các tham số:
username
: Tên của người dùng có mật khẩu bạn muốn thay đổipassword
: Mật khẩu của người dùng. Giá trị có thể là:- mật khẩu của người dùng trong chuỗi văn bản rõ ràng
- phương thức
passwordPrompt()
để nhắc nhập mật khẩu của người dùng
Phân quyền cho người dùng
Sử dụng phương thức db.grantRolesToUser() với cú pháp như sau:
db.grantRolesToUser(username, roles, writeConcern)
Các tham số:
username
: tên của người dùng được cấp quyềnroles
: kiểu là một mảng tài liệu (document) xác định một loạt các quyền bổ sung để cấp cho người dùngwriteConcern
: Không bắt buộc. Mức độ quan tâm đối với việc sửa đổi. Tài liệu writeConcern nhận các trường giống như lệnh getLastError.
db.grantRolesToUser(
"sinhnx",
["read", {role:"read", db:"test"}]
)
Câu lệnh trên sẽ phân quyền cho người dùng "sinhnx
" có quyền đọc ("read
") cho cơ sở dữ liệu "test
"
Xóa người dùng
Sử dụng phương thức db.dropUser()
db.dropUser(username, writeConcern)
trong đó
username
: Tên người dùng sẽ bi∆ xóa từ cơ sở dữ liệuwriteConcern
: Không bắt buộc. Xác định mức độ ghi đối với phương thức loại bỏ.
Ví dụ:
db.dropUser("sinhnx")