linux - MongoDB auth=true 集群管理员仍然缺乏权限

标签 linux mongodb authentication ubuntu permissions

我需要一些关于 mongo 的帮助。

我根据以下说明安装了 2.4.9 版本:
对于 ubuntu - http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
对于 Debian - http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/

我遵循手册和文档。一切正常,但是当我将 mongo 设置更改为“auth=true”时,权限变得疯狂。

这是我的用户:

{
    "_id" : ObjectId("5305dd8729ae7b95a4bde944"),
    "user" : "root",
    "pwd" : "063bbfd478f7b78df6c93b6202af9145",
    "roles" : ["clusterAdmin", "userAdminAnyDatabase", 
            "readWriteAnyDatabase", "dbAdminAnyDatabase" ] }


我用的是 rockmongo。当我打开我的 mongodb 时,它说我没有足够的权限来运行命令 db.getCollectionNames()

它说:执行失败:未经授权

创建用户、管理数据库也是如此。

我无法想象我应该为用户提供更多的权限。

正如手册中所述,该用户是我创建的第一个用户。我给了他所有最高的管理员权限。

auth 参数更改为 auth=true 后 我也无法在命令行中登录。

$ mongo -uroot -p <my password> --host 127.0.0.1
MongoDB shell version: 2.4.9
connecting to: 127.0.0.1:27017/test
Thu Feb 20 11:56:17.510 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
exception: login failed


顺便说一句,我尝试了带大括号和不带大括号的密码。有长选项和短选项。这样 -p 和这样 -p

但是应用程序(使用简单的数据库用户)工作正常。 我创建了数据库和两个用户(在设置 auth=true 之前),它们对于使用它们的应用程序来说似乎很好。

我无法用谷歌搜索任何信息。在大多数情况下,添加 clusterAdmin 或其他权限可以为他们解决问题。

操作系统:Ubuntu 12.04 和 Debian 7(两者行为相同)
MongoDB:2.4.9

我的错误是什么?

最佳答案

您是否在 admin 数据库上创建了用户? clusterAdmin 和 *AnyDatabase 权限仅适用于管理数据库。

认证时,需要对admin数据库进行认证,然后根据用户的权限访问其他数据库。

mongo --authenticationDatabase admin -u root -p <my password> --host 127.0.0.1

关于linux - MongoDB auth=true 集群管理员仍然缺乏权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907602/

相关文章:

c - Linux system() 和信号处理程序导致竞争条件?

c++ - DDD 的运行时错误

mongodb - 带有 mongoid ... (Mongoid::Errors::NoSessionConfig) 的 Rails 应用程序:找不到名为 'default' 的 session 的配置

使用 Elixir-mongo 进行 Mongodb 身份验证

php - 远程部署后 Yii 登录不起作用

java - 没有连接数据库?

linux - 为什么有些部分没有在更大的窗口上呈现?

linux - 如何使用 scrapy 命令动态创建 Feed Export 的文件名

php - 如何通过搜索内部数组来检查记录是否存在

authentication - 如何将受密码保护的存储库添加到 Sonatype Nexus?