我正在尝试在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上插入"
有人可以帮帮我吗?
来自docs.mongodb.org-超级用户角色
让我们写一些看起来简单且易于实现的答案
脚步 :
1:sudo apt-get install mongodb-org
- 在新的终端
2: sudo mongod --port 27017 --dbpath /var/lib/mongodb
3:mongo --port 27017
- 在新的终端
4: use admin
5:正如@drmirror所说,用户应该拥有所有4个角色才能成为超级用户
db.createUser( { user: "tom", pwd: "jerry", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
db.createUser( { user: "tom", pwd: "jerry", roles:["root"] })
6:sudo /etc/init.d/mongod stop
或sudo service mongod stop
- 在新的终端
7:sudo /etc/init.d/mongod start
或sudo 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 >
该角色userAdminAnyDatabase
使用户能够创建用户并为其分配任意角色.因此,该用户有权在数据库上做任何事情,因为他可以给任何人任何许可(包括他自己).
但是,userAdminAnyDatabase
除了为任意用户分配任意权限之外,角色本身不允许用户执行任何其他操作.要在数据库上实际执行某些操作,该用户需要具有以下附加角色:
readWriteAnyDatabase dbAdminAnyDatabase clusterAdmin
拥有上述三项权利并且 userAdminAnyDatabase
是真正的超级用户且可以执行任何操作的用户.