我试图在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"
任何人都可以帮助我?
答案 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 角色超级用户
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
>
答案 1 :(得分:52)
角色userAdminAnyDatabase
使用户能够创建用户并为其分配任意角色。因此,该用户有权在数据库上做任何事情,因为他可以给任何人任何许可(包括他自己)。
但是,除了为任意用户分配任意权限之外,userAdminAnyDatabase
角色本身不允许用户执行任何其他操作。要在数据库上实际执行某些操作,该用户需要具有以下附加角色:
readWriteAnyDatabase
dbAdminAnyDatabase
clusterAdmin
拥有上述三项权利和 userAdminAnyDatabase
的用户是真正的超级用户,可以做任何事情。