无法在MongoDB中的单独数据库中创建管理员用户

时间:2014-07-09 16:32:10

标签: mongodb security authorization

我使用的是MongoDB 2.6.2版,并有两个数据库 - 管理员和书籍。 在早期版本的MongoDB(1. *)中,我可以分别为每个数据库创建管理员用户。现在每当我尝试为第二个数据库创建用户时,他们仍然会添加到第一个数据库中。 以下是mongo shell输出的摘录:

/* creating admin db */
> use admin;
switched to db admin
> db.createUser( { "user" : "admin_root", "pwd": "pass", "roles" : ["root"] } )
Successfully added user: { "user" : "admin_root", "roles" : [ "root" ] }

/* creating books db */
> use books;
switched to db books
> db.createUser( { "user" : "admin_books", "pwd": "pass", "roles" : ["dbOwner"] } )
Successfully added user: { "user" : "admin_books", "roles" : [ "dbOwner" ] }
> db.createUser( { "user" : "logger", "pwd": "pass", "roles" : ["readWrite"] } )
Successfully added user: { "user" : "logger", "roles" : [ "readWrite" ] }

/* users in books db */
> db.system.users.find()
> /* Nothing here */

/* users in admin db */
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.admin_root", "user" : "admin_root", "db" : "admin", "credentials" : { "MONGODB-CR" : "082e4c55ecb7993eb3b1825fe7df8902" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "books.admin_books", "user" : "admin_books", "db" : "books", "credentials" : { "MONGODB-CR" : "0384574df69c4b809c4432f79c0d8a97" }, "roles" : [ { "role" : "dbOwner", "db" : "books" } ] }
{ "_id" : "books.logger", "user" : "logger", "db" : "books", "credentials" : { "MONGODB-CR" : "307b0eac760bd1031b82908c84a231d6" }, "roles" : [ { "role" : "readWrite", "db" : "books" } ] }
>

我有什么不对的吗?

1 个答案:

答案 0 :(得分:1)

这是正确的行为。正在使用所分配数据库的正确凭据和角色创建用户。例如,此文档位于数据库admin中的“system.users”集合中:

{ "_id" : "books.admin_books", "user" : "admin_books", "db" : "books", "credentials" : { "MONGODB-CR" : "0384574df69c4b809c4432f79c0d8a97" }, "roles" : [ { "role" : "dbOwner", "db" : "books" } ] }

清楚地表明该用户具有数据库“books”的角色“dbOwner”。

也许您的困惑是所有这些用户都存储在“admin”数据库的“system.users”集合中。这是存储所有用户信息的地方。来自文档:

  

<强> admin.system.users

     

在版本2.6中更改。

     

admin.system.users集合存储用户的身份验证   凭据以及分配给用户的任何角色。用户可以   在admin.system.roles集合中定义授权角色。

http://docs.mongodb.org/manual/reference/system-collections/