我正在尝试向MongoDB添加授权.
我正在使用MongoDB 2.6.1在Linux上完成所有这些工作.
我的mongod.conf文件采用旧的兼容性格式
(这是安装时的方式).
1)我创建了管理员用户,如(3)中所述
http://docs.mongodb.org/manual/tutorial/add-user-administrator/
2)然后我通过取消注释这一行来编辑mongod.conf
auth = true
3)最后我重新启动了mongod服务,我尝试登录:
/usr/bin/mongo localhost:27017/admin -u sa -p pwd
4)我可以连接,但它在连接时说出来.
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
Run Code Online (Sandbox Code Playgroud)
5)现在看来sa我创建的这个用户根本就没有权限.
root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
"$err" : "not authorized for query on admin.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>
Run Code Online (Sandbox Code Playgroud)
问题是什么?我重复了整个过程3次,
我认为我按照MongoDB文档中的规定完成了所有操作.但它不起作用.
我希望这个sa用户有权做任何事情,这样
他就可以创建其他用户并为他们提供更具体的权限.
s-h*_*ter 393
我也在同样的问题上摸不着头脑,在添加第一个管理员用户后,我将角色设置为root后,一切正常.
use admin
db.createUser(
{
user: 'admin',
pwd: 'password',
roles: [ { role: 'root', db: 'admin' } ]
}
);
exit;
Run Code Online (Sandbox Code Playgroud)
有关完整的身份验证设置参考,请参阅我在互联网上研究数小时后编译的步骤.
Joh*_*one 34
这有点令人困惑 - 我相信你需要给自己readWrite来查询数据库.具有dbadmin或useradmin的用户可以管理数据库(包括授予您自己的其他权限),但无法执行查询或写入数据.
给自己readWrite,你应该没事 -
http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite
Bar*_*t C 30
也许一个如何更改当前用户的快速示例将对某人有所帮助.这就是我真正想要的.
继@JohnPetrone的意见,我加入读写角色与我的管理员用户grantRolesToUser
> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
Run Code Online (Sandbox Code Playgroud)
jre*_*emi 22
您可以尝试:使用--authenticationDatabase标志可以帮助您.
mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"
Run Code Online (Sandbox Code Playgroud)
小智 8
这是一个简单的问题。
使用你的数据库
显示用户
db.createUser( { 用户: "yourUser", pwd: "密码", 角色: [ "readWrite", "dbAdmin" ] } )
或者
db.grantRolesToUser('yourUser',[{ 角色: "dbAdmin", db: "yourDB" }])
小智 7
我知道这个问题的答案在这个帖子中已经很晚了,但我希望你能看出来.
您收到该错误的原因是基于您授予用户的特定角色,您现在已经收集了该角色,是的,为该用户提供该角色root将解决您的问题,但您必须先了解这些角色在授予这些角色之前的确切行为给用户.
在教程中,您向用户授予了一个userAdminAnyDatabase角色,该角色基本上使用户能够管理所有数据库的用户.您尝试对用户执行的操作超出了其角色定义.
该root角色拥有这个角色包含在它的定义还有readWriteAnyDatabase,dbAdminAnyDatabase和其他角色使其成为一个超级用户(主要是因为你可以用它做任何事情).
您可以查看角色定义,以了解为用户完成某些任务所需的角色. https://docs.mongodb.com/manual/reference/built-in-roles/ 不建议让所有用户都超级好:)
| 归档时间: |
|
| 查看次数: |
264342 次 |
| 最近记录: |