为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB-管理员用户未经授权

/ 猿问

MongoDB-管理员用户未经授权

翻过高山走不出你 2019-12-09 11:22:05

我正在尝试向我的MongoDB添加授权。

我正在Linux上使用MongoDB 2.6.1进行所有这些操作。

我的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" }

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 >>>

问题是什么?我将整个过程重复了3次,

我认为我按照MongoDB文档中的说明进行了所有操作。但这是行不通的。

我期望该sa用户有权执行任何操作,以便

他可以随后创建其他用户并为他们提供更具体的权限。


查看完整描述

3 回答

?
慕盖茨9453107

我也为相同的问题scratch之以鼻,在添加第一个管理员用户时,将角色设置为root,一切正常。


use admin

db.createUser(

  {

    user: 'admin',

    pwd: 'password',

    roles: [ { role: 'root', db: 'admin' } ]

  }

);

exit;

如果已经创建了admin用户,则可以这样更改角色:


use admin;

db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

有关完整的身份验证设置的参考,请参阅经过数小时的互联网研究后编写的步骤。


查看完整回答
反对 回复 2019-12-09
?
FFIVE

这有点令人困惑-我相信您将需要授予自己readWrite来查询数据库。具有dbadmin或useradmin的用户可以管理数据库(包括授予自己其他权限),但不能执行查询或写入数据。


因此,请授予自己readWrite,您应该会很好-


http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite


查看完整回答
反对 回复 2019-12-09
?
哈士奇WWW

我知道这个线程的答案真的很晚,但是我希望您能检查一下。


发生该错误的原因是基于您现在授予用户的特定角色,是的,是的,给该用户该角色root将解决您的问题,但是在授予他们角色之前,您必须首先了解这些角色的确切作用给用户。


在教程中,您授予了用户userAdminAnyDatabase角色,该角色基本上使用户能够管理所有数据库的用户。您试图对用户执行的操作超出了其角色定义。


该root角色拥有这个角色包含在它的定义还有readWriteAnyDatabase,dbAdminAnyDatabase和其他角色使其成为一个超级用户(主要是因为你可以用它做任何事情)。


您可以查看角色定义,以查看需要哪些角色才能授予用户完成某些任务的权限。 https://docs.mongodb.com/manual/reference/built-in-roles/ 最好不要让所有用户都是超级用户:)


查看完整回答
反对 回复 2019-12-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信