MongoDB 2.4副本设置授权

时间:2013-04-16 10:14:08

标签: mongodb mongodb-shell

如何为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" }

2 个答案:

答案 0 :(得分:1)

如果您有复制品,我认为您需要使用keyFile。

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

  

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

答案 1 :(得分:0)

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

关闭身份验证

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 

然后你可以执行命令。

希望这会有所帮助:)