MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bắt đầu với quản lý người dùng MongoDB

Một trong những tác vụ đầu tiên sau khi thiết lập và chạy máy chủ cơ sở dữ liệu MongoDB của bạn là định cấu hình người dùng và cơ sở dữ liệu của bạn. Trong bài đăng này, chúng ta sẽ xem xét một số tình huống phổ biến khi tạo và định cấu hình người dùng trong MongoDB. Quản lý người dùng MongoDB đã được cải thiện rất đáng kể so với hai phiên bản trước và hiện là một mô hình quản lý người dùng có khả năng và chức năng. Người dùng có thể được chỉ định các vai trò khác nhau và các vai trò có thể được định cấu hình với các đặc quyền mong muốn. Có một số vai trò người dùng được tích hợp sẵn để sử dụng hoặc bạn có thể tạo các vai trò tùy chỉnh của riêng mình.

Các ví dụ trong bài đăng này sử dụng máy khách 2.6.4 và máy chủ 2.6.4. Những thay đổi đáng kể đã được thực hiện đối với mô hình quản lý người dùng từ 2.4 đến 2.6. Vì vậy, nếu bạn đang sử dụng ứng dụng khách 2.4, rất nhiều ví dụ trong bài đăng này sẽ không phù hợp với bạn. Bạn có thể kiểm tra phiên bản của ứng dụng khách yoMongoDBodb bằng cú pháp sau:

 mongo --version 

Thêm người dùng vào cơ sở dữ liệu

Bước đầu tiên sau khi tạo người dùng là tạo cơ sở dữ liệu ứng dụng của bạn:

 sử dụng ứng dụng; 

Sau khi tạo cơ sở dữ liệu này, chúng tôi muốn tạo người dùng sẽ được ứng dụng sử dụng để ghi vào cơ sở dữ liệu này. Chúng tôi muốn người dùng này có đặc quyền đọc và ghi vào cơ sở dữ liệu:

 db.createUser ({'user':'appuser', 'pwd':'', role:['readWrite']}); 

Đôi khi, chúng tôi cũng muốn thêm người dùng có quyền truy cập chỉ đọc vào cơ sở dữ liệu. Ví dụ:chúng tôi có thể muốn thêm một người dùng phân tích chỉ có quyền truy cập chỉ đọc vào cơ sở dữ liệu:

 db.createUser ({'user':'analyticsuser', 'pwd':'', role:['read']}); 

Bây giờ người dùng đã được tạo, hãy thử kết nối với tư cách là người dùng này từ bảng điều khiển MongoDB:

 mongo -u 'appuser' -p  / applicationationdbMongoDB shell phiên bản:2.6.4 đang kết nối với: / applicationationdb> 

Bạn đã kết nối thành công! Lưu ý “/ applicationationdb” ở cuối cú pháp yêu cầu MongoDB xác thực ‘appuser’ trên cơ sở dữ liệu ‘applicationationdb’.

Thêm người dùng vào nhiều cơ sở dữ liệu

Trong nhiều trường hợp, chúng ta cần tạo nhiều cơ sở dữ liệu trên máy chủ. Ví dụ:trong trường hợp này, chúng tôi có thể cần tạo một cơ sở dữ liệu khác 'analyticsdb' để lưu trữ các kết quả phân tích. Giờ đây, ‘analyticsuser’ cần có quyền truy cập ‘readonly’ trên các quyền ‘applicationationdb’ và ‘readWrite’ trên ‘analyticsdb’.

Vậy, làm cách nào để đạt được điều này? Chúng ta có nên thêm ‘analyticsuser’ vào mỗi cơ sở dữ liệu không? Điều này tạo ra cơn ác mộng quản lý về lâu dài khi nhiều người dùng và cơ sở dữ liệu được thêm vào. May mắn thay, có một giải pháp đơn giản. Chúng tôi có thể tập trung các nhiệm vụ vai trò cho người dùng và lưu trữ chúng trong một cơ sở dữ liệu duy nhất. Trong trường hợp này, tôi muốn lưu trữ các nhiệm vụ này trong cơ sở dữ liệu 'quản trị viên' vì nó là trung tâm quản trị trung tâm trong máy chủ, nhưng bạn cũng có thể lưu trữ nó trong một cơ sở dữ liệu riêng biệt:

 sử dụng Admindb.createUser ({user:'analyticsuser', pwd:'', role:[{'role':'read', 'db':'applicationationdb'}, {'role':' readWrite ',' db ':' analyticsdb '}]}); 

Sau khi được thêm, bạn có thể sử dụng 'hiển thị người dùng' để hiển thị thông tin chi tiết về người dùng của mình. Đây là cơ sở dữ liệu quản trị của tôi trông như thế nào:

 use admin> hiển thị cho người dùng {"_ id":"admin.admin", "user":"admin", "db":"admin", "role":[{"role":"root", " db ":" admin "}, {" role ":" restore "," db ":" admin "}]} {" _ id ":" admin.analyticsuser "," user ":" analyticsuser "," db ":"admin", "role":[{"role":"read", "db":"applicationationdb"}, {"role":"readWrite", "db":'analyticsdb "}]}> 

Bây giờ người dùng của chúng tôi đã được thêm vào, hãy thử kết nối từ bảng điều khiển để xác minh xác thực bằng cú pháp chúng tôi đã sử dụng ở trên:

 mongo -u 'analyticsuser' -p   / applicationationdb 

Tuy nhiên, xác thực không thành công:

 2014-10-06T23:11:42.616 + 0000 Lỗi:18 {ok:0.0, errmsg:"auth failed", code:18} at src / mongo / shell / db.js:1210exception:login failed  

Nguyên nhân là do ‘analyticsuser’ được xác định trên cơ sở dữ liệu ‘admin’ chứ không phải trên ‘applicationationdb’. Cách để chỉ định điều này là sử dụng tham số ‘–authenticationDatabase’.

 mongo -u 'analyticsuser' -p   / applicationationdb --authenticationDatabase 'admin' 

Lần này, đăng nhập thành công:

 MongoDB shell phiên bản:2.6.4 đang kết nối với: / applicationationdb 

Để hiểu rõ hơn về các vai trò tích hợp khác có sẵn trong MongoDB, bạn có thể tham khảo tài liệu MongoDB về Vai trò tích hợp sẵn. Như thường lệ, nếu bạn có thêm câu hỏi, bạn có thể liên hệ với chúng tôi theo địa chỉ [email protected].


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - khác biệt với truy vấn không sử dụng chỉ mục

  2. MongoDB trên máy Windows 7:Không thể thực hiện kết nối

  3. 3 cách để ẩn một chỉ mục khỏi kế hoạch truy vấn trong MongoDB

  4. Cách sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong MongoDB

  5. Một bảng gian lận hiệu suất cho MongoDB