具有授权的MongoDB 2.4副本集

Szy*_*cki 5 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
Run Code Online (Sandbox Code Playgroud)

添加用户授权后:

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

我无法访问rs。*命令。

> use admin
> db.auth('admin','xxx')
1
> rs.status()
{ "ok" : 0, "errmsg" : "unauthorized" }
Run Code Online (Sandbox Code Playgroud)

小智 1

我认为如果你有复制集,你需要使用 keyFile。

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

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