6

如何为 mongodb 2.4.1 设置正确的授权。我的设置似乎不起作用。副本成员配置:

dbpath = /vol/data/mongodb/

# logfile
logpath   = /var/log/mongodb/mongodb.log
logappend = true

# socket
bind_ip = 0.0.0.0
port = 27018

# replication
replSet = <%= hostname[14,4] %>

# authentication
keyFile = /etc/mongodb.pass

# turn off legacy privilege mode
setParameter = supportCompatibilityFormPrivilegeDocuments=false
setParameter = textSearchEnabled=false

# turn off authorization
auth = true

添加用户授权后:

> use admin
> db.addUser( { user: "admin", pwd: "xxx", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase" ] } )

我无法访问 rs.* 命令。

> use admin
> db.auth('admin','xxx')
1
> rs.status()
{ "ok" : 0, "errmsg" : "unauthorized" }
4

2 回答 2

3

我也在处理同样的问题。我有一个解决方案。

关闭身份验证

1.创建具有root权限的用户

Root privilege yields readWrite access to database while userAdminAnyDatabase role doesn't.

use admin
db.createUser( {
    user: "root",
    pwd: "pass",
    roles: [ { role: "root", db: "admin" } ]
  });

开启授权

2.以root用户登录

mongo -u root --authenticationDatabase admin -p 

然后你就可以执行你的命令了。

希望这可以帮助 :)

于 2015-12-19T10:27:35.267 回答
1

如果您有副本集,我认为您需要使用 keyFile。

取自http://docs.mongodb.org/manual/tutorial/enable-authentication/

使用 auth 或 keyFile 设置启用身份验证。将 auth 用于独立实例,将 keyFile 用于副本集和分片集群。keyFile 暗示身份验证并允许 MongoDB 部署的成员在内部进行身份验证。

于 2013-05-17T19:42:08.247 回答