在mongo中创建超级用户

时间:2014-03-25 14:56:00

标签: mongodb permissions database nosql

我试图在mongo中创建一个可以在任何数据库中执行任何操作的用户。

根据指南,我创建了一个新的管理员:http://docs.mongodb.org/manual/tutorial/add-user-administrator

这是代码:

use admin
db.addUser( { user: "try1",
              pwd: "hello,
              roles: [ "userAdminAnyDatabase" ] } )

然后我停止了mongo,启用了auth并重新启动了mongo。

然后我尝试与他的用户一起创建一个数据库。

根据本指南:http://www.mkyong.com/mongodb/how-to-create-database-or-collection-in-mongodb/

use fragola 
db.users.save( {username:"fragolino"} )

我得到了这个:"未授权插入fragola.users"

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:54)

from docs.mongodb.org-superuser-roles

  

让我们写一些看似简单的回答&也很容易实现

步骤:

1:sudo apt-get install mongodb-org - in new terminal

2:sudo mongod --port 27017 --dbpath /var/lib/mongodb

3:mongo --port 27017 - 在新终端

4:use admin

5:正如@drmirror所说,用户应该拥有 4 角色超级用户

对于Mongo版本2。

db.createUser(
{
    user: "tom",
    pwd: "jerry",
    roles: [
              { role: "userAdminAnyDatabase", db: "admin" },
              { role: "readWriteAnyDatabase", db: "admin" },
              { role: "dbAdminAnyDatabase", db: "admin" },
              { role: "clusterAdmin", db: "admin" }
           ]
})

对于Mongo版本3。

db.createUser(
   {
       user: "tom", 
       pwd: "jerry", 
       roles:["root"]
   })

6:sudo /etc/init.d/mongod stopsudo service mongod stop - 在新终端中

7:sudo /etc/init.d/mongod startsudo service mongod start

8:restart your pc

9:sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb - 在新终端

10:mongo --port 27017 -u "tom" -p "jerry" --authenticationDatabase "admin" - 在新终端

注意第10步是最重要的一步。

它将在终端上输出

MongoDB shell version: 2.6.11
connecting to: 127.0.0.1:27017/test
>

答案 1 :(得分:52)

角色userAdminAnyDatabase使用户能够创建用户并为其分配任意角色。因此,该用户有权在数据库上做任何事情,因为他可以给任何人任何许可(包括他自己)。

但是,除了为任意用户分配任意权限之外,userAdminAnyDatabase角色本身不允许用户执行任何其他操作。要在数据库上实际执行某些操作,该用户需要具有以下附加角色:

readWriteAnyDatabase
dbAdminAnyDatabase
clusterAdmin

拥有上述三项权利 userAdminAnyDatabase的用户是真正的超级用户,可以做任何事情。