MongoDB 2.4 副本集授权

标签 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" }

最佳答案

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

关闭身份验证

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

Root 权限会产生对数据库的读写访问权限,而 userAdminAnyDatabase 角色则不会。

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

开启授权

2.以root用户登录

mongo -u root --authenticationDatabase admin -p 

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

希望这会有所帮助:)

关于MongoDB 2.4 副本集授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16034373/

相关文章:

mongodb - 如何在不使用封顶集合的情况下在MongoDB中存储一组有序文档

mongodb - 从 MongoDB shell 获取当前脚本路径

javascript - 尝试用空格重命名 MongoDB 文档字段

java - 将 MongoCollection<Document> 转换为 DBCollection SpingBoot 1.5.4 到 2.1.0.RELEASE

python - Pymongo $currentDate 对于存储无效

node.js - 如何在 MongoDB 中 $set new Date() ?

javascript - Mongodb在数组查询中不会得到任何结果

MongoDB $lookup 不使用索引

mongodb - 如何在 mongo shell 中对输出进行分页

javascript - MongoDB shell : How to remove specific elements in all the collections inside a DB