如何为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" }
答案 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
然后你可以执行命令。
希望这会有所帮助:)