2013-07-09 24 views
8

Trong Mongo 2.4.x, nó hỗ trợ một cách mới để create user in admin database, Tôi nghĩ người sử dụng tạo ra với userAdminAnyDatabase vai trò sẽ có thể truy cập vào tất cả các cơ sở dữ liệu khác đúng?Không thể truy cập dbs khác cho người dùng tạo ra như "userAdminAnyDatabase" vai trò

db.addUser({user:"u", pwd:"p", roles:["userAdminAnyDatabase"]}) 

Tuy nhiên, không thể thực hiện việc này theo tài liệu.

Khi tôi tạo người dùng theo kiểu 2.2.x, Nó hoạt động.

db.addUser("u","p") 

Câu hỏi của tôi là tôi đã nhầm lẫn các hoạt động? Nếu tôi muốn tạo một người dùng có thể truy cập tất cả dbs bằng cú pháp 2.4.x, thì cách nào đúng? Bất kỳ tùy chọn khác cần thiết?

Cảm ơn.

Dưới đây là các chi tiết shell mã:

➜ mgo ✗ mongo 
MongoDB shell version: 2.4.5 
connecting to: test 
> use admin 
switched to db admin 
> db.addUser({user: "u", pwd: "p", roles:["userAdminAnyDatabase"]}) 
{ 
    "user" : "u", 
    "pwd" : "d4198ee555320fa5c048da6d6da440d8", 
    "roles" : [ 
     "userAdminAnyDatabase" 
    ], 
    "_id" : ObjectId("51dc20f0282f72950455b62e") 
} 
> db.auth(
Display all 170 possibilities? (y or n) 
> db.auth("u","p") 
1 
> ^C 
bye 
➜ mgo ✗ mongo admin -u u -p p 
MongoDB shell version: 2.4.5 
connecting to: admin 
> show dbs 
Tue Jul 9 22:44:47.959 JavaScript execution failed: listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:L46 
> use admin 
switched to db admin 
> db.addUser("uncle", "peter") 
{ 
    "user" : "uncle", 
    "readOnly" : false, 
    "pwd" : "e42842e07c4fc324e9724d6aa41f6411", 
    "_id" : ObjectId("51dc22456642fa58413adffc") 
} 
> db.auth("uncle", "peter") 
1 
> ^C 
bye 
➜ mgo ✗ mongo admin -u uncle -p peter 
MongoDB shell version: 2.4.5 
connecting to: admin 
> show dbs 
admi (empty) 
admin 0.203125GB 
local 0.078125GB 
qortex_global 0.203125GB 
qortexprod 0.203125GB 
test (empty) 
> 

Trả lời

19

Các tài liệu trên userAdminAnyDatabase nói (http://docs.mongodb.org/manual/reference/user-privileges/#userAdminAnyDatabase):

Tuy nhiên, userAdminAnyDatabaseuserAdmin không rõ ràng ủy quyền cho một người dùng cho bất kỳ đặc quyền nào ngoài quản trị người dùng.

Bạn cũng sẽ có thêm các "clusterAdmin" vai trò đối với cơ sở dữ liệu danh sách lệnh: http://docs.mongodb.org/manual/reference/user-privileges/#clusterAdmin

Nếu bạn muốn, bạn dùng để đọc/ghi từ cơ sở dữ liệu và các bộ sưu tập, bạn sẽ cần phải thêm một vai trò khác, vai trò "readWrite": http://docs.mongodb.org/manual/reference/user-privileges/#readWrite

+0

Xin chào, @Derick, nó hoạt động. nhưng tôi vẫn hy vọng người dùng được tạo không chỉ có thể liệt kê tất cả các dbs khác, mà còn có thể có quyền đọc/ghi. Cần bất kỳ vai trò nào khác? – yeer

+0

Có, để đọc/ghi, bạn cần có vai trò "readWrite". – Derick

+0

cảm ơn, rất hữu ích – yeer

Các vấn đề liên quan