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" |
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 |
Bây giờ chúng ta dùng lệnh
Để xem có bao nhiêu database
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"}]}] |
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"}] }} ] |
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"} ]] }} ] |
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
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 |
[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 |
Bây giờ chúng ta sẽ chạy lại server Mongodb với authentication để test
db.createCollection["abc"].createCollection["abc"] |
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"}]}] |
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"]; |
]
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
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 |
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.
//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