STACKJAVA

Tạo user/roles, phân quyền người dùng trên MongoDB

This entry is part 19 of 24 in the series MongoDB

Tạo user/roles, phân quyền người dùng trên MongoDB

Tạo user trong MongoDB

Để tạo user trong MongoDB ta sử dụng method createUser()

db.createUser(
  {
    user: "username",
    pwd: "password",
    roles: [ { role: "role_name", db: "db_name" } ]
  }
)

Trong đó roles: sẽ chứa 1 list các role cho user vừa tạo, mỗi role sẽ bao gồm tên database + role tương ứng với database đó.

(Xem lại: Các loại roles, vai trò, quyền trong MongoDB)

Tạo System user

Để tạo system user, ta sẽ tạo user trên database admin, các system user này có thể truy cập, chỉnh sửa các database khác nếu được cấp quyền.

Ví dụ mình tạo user kai/123456 với role cao nhất là root

use admin

db.createUser({ user: "kai", pwd: "123456", roles: [ { role: "root", db: "admin" } ] })

Tạo user cho từng database

Ví dụ tạo user sena/123456 với quyền chỉ đọc read với database demo

use demo

db.createUser({ user: "sena", pwd: "123456", roles: [ { role: "read", db: "demo" } ] })

Demo

Để tạo user trên MongoDB, trước hết bạn phải đăng nhập bằng chế độ non-auth.

(Xem lại: Bật, tắt chức năng đăng nhập MongoDB với username, password.)

Ví dụ tạo user kai/123456 với role root

Sau khi thêm được user, ta bật chức năng auth của MongoDB và khởi động lại MongoDB.

(Xem lại: Bật, tắt chức năng đăng nhập MongoDB với username, password.)

Để đăng nhập MongoDB với username password ta có 2 cách:

Cách 1: chỉ rõ username, password và database khi connect:

mongo -u username -p password host:port/database_name

Ví dụ: đăng nhập MongoDB với account (kai/123456) vừa tạo ở trên.

mongo -u kai -p 123456 localhost:27017/admin

Cách 2: sử dụng method db.auth()

Connect bằng lệnh mongo, sau đó dùng lệnh db.auth() trên database cần xác thực:

Ví dụ:

Sau khi đăng nhập bằng user (kai/123456) bạn có quyền root nên có thể tạo user mới.

Ví dụ mình tạo user sena/123456 với quyền read trên database demo:

Vì user kai/123456 có quyền root nên nó cũng có thể insert dữ liệu cho các database khác, ví dụ mình insert document player {'name':'ronaldo'} vào database demo:

Bây giờ đăng nhập với user sena/123456: ta có thể xem (find) tất cả collections, document của database demo nhưng không thể insert dữ liệu vào database demo vì user sena chỉ có quyền read.

 

Okay, Done!

References:

https://docs.mongodb.com/manual/reference/method/db.createUser/

Series Navigation<< Đổi tên field trong MongoDB với $renameCác loại roles, vai trò, quyền trong MongoDB. >>