Hướng dẫn user mongodb - người dùng mongodb

Hướng dẫn user mongodb - người dùng mongodb

Trong những bài thực hành trước đây mình chỉ dùng noauth để bỏ qua việc kết nối database với username password và việc phân quyền user vì các lý do:

a. Dễ trong việc thực hành thêm xóa sửa.

b. Các Tools UI như Robomongo chưa thể kết nối authentication vì mã hóa SCRAM-SHA-1 chưa được hỗ trợ trong phiên bản hiện tại (0.8.5) chờ bản 0.9.0 của nhà phát hành – do đó việc dùng tools để xem là không thể.

Vì lý do trên nên mình sẽ hướng dẫn tại bài này phần kết nối và làm việc với command line (cmd) windows

1. Các Roles của MongoDB

Xem lại bài viết Mô Tả Và Vai Trò Của Roles Trong MongoDB.

2. Start Mongodb với noauth

Mở Command Prompt bằng cách start rồi gõ cmd.

Dùng lệnh cd để trỏ về đường dẫn cài đặt Mongodb hoặc chạy thẳng lệnh đến file mongod.exe như bên dưới vì minh cài mongodb trên ổ C nên gọi từ c -> mongodb > folder bincd để trỏ về đường dẫn cài đặt Mongodb hoặc chạy thẳng lệnh đến file mongod.exe như bên dưới vì minh cài mongodb trên ổ C nên gọi từ c -> mongodb > folder bin

mình đang dùng path mặc định là c:\data\db

c:\>mongodb\bin\mongod.exe-noauth:\>mongodb\bin\mongod.exe-noauth

c:\>mongodb\bin\mongod.exe-noauth--path"c:\folder_chua_db":\>mongodb\bin\mongod.exe-noauth --path"c:\folder_chua_db"

Hướng dẫn user mongodb - người dùng mongodb

Như vậy là đã start server xong bây giờ chúng ta mở thêm 1 cmd nữa dùng để làm client kết nối tới server

(ngay đoạn này các bạn có thể dùng robomongo kết nối vì nó ko cần authentication).

Như trên chúng ta cũng trỏ về thư mục cài MongoDB\bin hoặc chạy thẳng lệnh:

C:\Users\Admin>c:\mongodb\bin\mongo.exe:\Users\Admin>c:\mongodb\bin\mongo.exe

Hướng dẫn user mongodb - người dùng mongodb

Bây giờ chúng ta dùng lệnh

Để xem có bao nhiêu database

Hướng dẫn user mongodb - người dùng mongodb

3. Tạo System User Administrator

Trước tiên chúng ta dùng lệnh use admin để chọn database và để add user trên đó. Sau đó tạo user với name là SuperAdmin pass là 123456 roles userAdminAnyDatabase

useadminadmin

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

Hướng dẫn user mongodb - người dùng mongodb

Chúng ta đã thêm admin cho các database của MongoDB

4.Tạo UserAdmin cho từng database

Bây giờ mình sẽ tạo database là testadmin và tạo user admin riêng chỉ cho database này thôi

usetestadmintestadmin

db.createUser(.createUser(

  {{

    user:"dtmi",user:"dtmi",

    pwd:"987654",pwd:"987654",

    roles:[{role:"userAdmin",db:"testadmin"}]roles: [{role:"userAdmin",db:"testadmin"}]

  }}

)

Hướng dẫn user mongodb - người dùng mongodb

Các bạn chú ý chỗ mình bôi xanh kẻo nhầm nhé, nếu các bạn muốn thêm nhiều rules thì add như sau:

usetestadmintestadmin

db.createUser(.createUser(

  {{

    user:"dtmi",user:"dtmi",

    pwd:"987654",pwd:"987654",

    roles:[roles: [

        {role:"userAdmin",db:"testadmin"},{role:"userAdmin",db:"testadmin"},

        {role:"role",db:"db"},{role: "role",db:"db"},

        {role:"role",db:"db"},        {role:"role",db:"db"},        

    ]]

  }}

)

Các bạn chú ý chỗ mình bôi xanh kẻo nhầm nhé, nếu các bạn muốn thêm nhiều rules thì add như sau:

5. Tạo 1 User chỉ cho Read Database

db.createUser(.createUser(

  {{

    user:"dtmitest",user:"dtmitest",

    pwd:"987654",pwd:"987654",

    roles:[roles:[

Chúng ta sẽ tạo thêm 1 user với roles là chỉ cho read không cho xóa xửa thêm để chúng ta có thể test phân biệt các roles với nhau{ role:"read",db:"testadmin"}  

    ]]

  }}

)

Hướng dẫn user mongodb - người dùng mongodb

Các bạn chú ý chỗ mình bôi xanh kẻo nhầm nhé, nếu các bạn muốn thêm nhiều rules thì add như sau:

5. Tạo 1 User chỉ cho Read Database

Hướng dẫn user mongodb - người dùng mongodb

Chúng ta sẽ tạo thêm 1 user với roles là chỉ cho read không cho xóa xửa thêm để chúng ta có thể test phân biệt các roles với nhau

        {role:"read",db:"testadmin"}  

Vậy là xong user mẫu để test rồi vì đang kết nối noauth chúng ta sẽ dùng robomongo để kiểm tra nhé.:\mongodb\bin\mongod.exe-auth

Hướng dẫn user mongodb - người dùng mongodb

(các bạn có thể add user trên mongodb bằng cách dùng robomongo cũng đc)

6. Tắt và chạy lại server Mongodb với auth:\mongodb\bin\mongo.exe-uSuperAdmin-p123456localhost:27017/admin

Hướng dẫn user mongodb - người dùng mongodb

Bây giờ chúng ta sẽ chạy lại server Mongodb với authentication để test

db.createCollection("abc").createCollection("abc")

Hướng dẫn user mongodb - người dùng mongodb

c:\mongodb\bin\mongod.exe-auth

Mở tiếp 1 cmd thứ 2 để làm client kết nối vào server với Useradmin: SuperAdmin

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

Hướng dẫn user mongodb - người dùng mongodb

c:\mongodb\bin\mongo.exe-uSuperAdmin-p123456localhost:27017/admin

Bây giờ chúng ta tạo 1 database và tạo 1 collection để test quyền admin:\mongodb\bin\mongo.exe-udtmitest-p987654localhost:27017/testadmin

Vì chúng ta đã tạo 1 dbAdminAnyDatabase với database là admin mà chưa cấp cho nó dùng testadmin

usetestadmin testadmin

db.createCollection("dtmi");.createCollection("dtmi");

Hướng dẫn user mongodb - người dùng mongodb

)

Hướng dẫn user mongodb - người dùng mongodb

Các bạn chú ý chỗ mình bôi xanh kẻo nhầm nhé, nếu các bạn muốn thêm nhiều rules thì add như sau:

Hướng dẫn user mongodb - người dùng mongodb

5. Tạo 1 User chỉ cho Read Database

Chúng ta sẽ tạo thêm 1 user với roles là chỉ cho read không cho xóa xửa thêm để chúng ta có thể test phân biệt các roles với nhau

        {role:"read",db:"testadmin"}   :\mongodb\bin\mongo.exe-uuser1-p1234localhost:27017/testadmin

Hướng dẫn user mongodb - người dùng mongodb

Như các bạn đã thấy thì giờ chúng ta đã add được document với quyền createWrite rồi.document với quyền createWrite rồi.

Roles rất quan trọng trong việc bảo mật nên trong MongoDB có đến 9 phân quyền Roles để quản lý. Tuy nhiên chỉ có root và thực hiện được tất cả các quyền còn nếu không cấp phát thì nó cũng không thực thi được.

Vì thế nên khi thực hiện Roles các bạn nên chú trọng việc bảo mật và cấp phát phân quyền cho đúng với User cần thiết.

https://www.dtmi.net/tao-user-va-cap-phat-quyen-quan-tri-database-trong-mongodb/Tạo user cấp phát quyền database Mongodb2015-04-15T09:55:40+07:00tuanthanhvoMongoDBadd user mongodb,mongodb rolesTạo user cấp phát quyền database Mongodb2015-04-15T09:55:40+07:00tuanthanhvoMongoDBadd user mongodb,mongodb roles

Trong những bài thực hành trước đây mình chỉ dùng noauth để bỏ qua việc kết nối database với username password và việc phân quyền user vì các lý do: a. Dễ trong việc thực hành thêm xóa sửa. b. Các Tools UI như Robomongo chưa thể kết nối authentication vì mã...

thànhvõ tuấn[email protected]AdministratorCà phê Cà pháo, Trảm gió v.vTutorials Blog võ tuấn[email protected]AdministratorCà phê Cà pháo, Trảm gió v.vTutorials Blog