如何在 mongodb 配置文件中设置授权?
Posted
技术标签:
【中文标题】如何在 mongodb 配置文件中设置授权?【英文标题】:How to set authorization in mongodb config file? 【发布时间】:2014-10-09 02:43:52 【问题描述】:我在服务器中运行mongod.exe
,并在cmd.exe
中使用此选项:
mongod.exe --dbpath=path --auth
现在,如何在配置文件中执行此操作?
我的mongod.cfg
:
dbpath=D:\Program Files\MongoDB 2.6 Standard\data
security=
authorization= enabled
我得到这个错误:
解析 INI 配置文件时出错:未知选项安全性。
【问题讨论】:
Configuration File Options 我读了这个并使用 YAML 。但得到很多错误。我认为这适用于 unix 基础系统而不是 windows 它的工作。dbpath=D:\Program Files\MongoDB 2.6 Standard\data auth=true
docs.mongodb.org/manual/administration/configuration
【参考方案1】:
对于 mongod 2.4 版(ini 配置文件)
auth = true
https://docs.mongodb.com/v2.4/reference/configuration-options/#auth
对于 mongod 版本 2.6+(yaml 配置文件)
security:
authorization: enabled
https://docs.mongodb.com/v3.2/reference/configuration-options/#security.authorization https://docs.mongodb.com/v3.0/reference/configuration-options/#security.authorization https://docs.mongodb.com/v2.6/reference/configuration-options/#security.authorization
【讨论】:
我在 v3.2.18 上遇到了问题。--auth
工作的地方.. 但 security:authorization: enabled
没有,给了 UserNotFound。有什么想法吗?
@codesmarter,你确定你的配置文件正在被使用吗?例如您在启动 mongod 时指定了 -f
或 --config
选项,或者如果使用系统默认安装,则将配置文件放在正确的位置?您还可以检查您是否正在针对正确的数据库进行身份验证,并且该数据库具有您期望的用户(例如检查 db.getUsers()
的输出)。
谢谢,你说得对,配置是从不同的数据库中读取的。
如其他答案所述,正确的配置用引号括起来"enabled"
@CarloRodríguez,作为 YAML,在这种情况下引号应该无关紧要。另见:***.com/questions/19109912/…【参考方案2】:
mongodb 3.2 版
这是正确的配置
security:
authorization: "enabled"
使用引号,因为根据文档,该值是一个字符串
【讨论】:
在 3.2 中正确的做法,在 mongo.cfg 中设置这个值。 但这仍然无法解决我的问题***.com/questions/41973998/…【参考方案3】:security:
authorization: "enabled"
如上所述,这是正确的,需要注意的一点是,如果它仍然不起作用,请确保您没有使用选项卡作为授权行,它不会起作用,您只需要使用空格即可。
【讨论】:
没错,但是您必须检查日志,告诉您正在处理的 YAML 错误(解析 YAML 时出错)。还有一件事 - 从字符串授权开始有 2 个空格,如果没有,则 yaml 中的错误【参考方案4】:只需要说一下
auth=true
您不需要任何其他选项!
【讨论】:
我更改了配置文件并将您的配置放入auth=true
,当我执行mongo
时,我获得了免费访问权限。我需要做任何其他配置吗?
你能在更新后完全分享 mongod.cfg 吗?【参考方案5】:
如果你使用 YAML
security:
authorization: "enabled"
为 2.6 或更高版本工作。
但如果你不使用 YAML。
auth: true
我正在使用 mongodb v3.0.2、v3.6.5、v4.0.3,这两个文件都可以正常工作。
INI 配置
# mongodb.conf
# Where to store the data.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 0.0.0.0
port = 27017
journal=true
auth = true
YAML 配置
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: "enabled"
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
【讨论】:
【参考方案6】:在 DigitalOcean 上,您获得 3.6.3 版本,但带有 2.* 样式的配置文件。这在阅读上面所有的 cmets 时会让人感到困惑。
因此,与其遵循 DigitalOcean 安装 MongoDB 指南 (this one),不如阅读官方 MongoDB 指南 (this one)
【讨论】:
【参考方案7】:他们聚会真的迟到了。
对我来说,以上都不起作用(在 Windows 上,在 Linux 上,“授权:启用”只要权限正确就可以正常工作)。 最终使用第三方服务管理器使用 --dbpath 和 --auth 选项创建了我自己的服务。像魅力一样工作。
我完全知道这不是一个直接的答案,但我希望这会对某人有所帮助。
不过,我不能使用“C:\Program Files\MongoDB\4.2\Server\data”文件夹。没有写权限。
【讨论】:
这不是答案。请把它作为一个新问题。【参考方案8】:db.adminCommand(
setParameter: 1,
security.authorization: "enabled"
);
【讨论】:
【参考方案9】:对我而言,导致故障/错误的关键因素已在 Robert Walters 响应中注明 - 在配置文件中使用 TAB。
将此更改为 4 个空格可解决问题,同时保持配置文件看起来整洁/可读。
【讨论】:
请不要将答案作为感谢其他用户的方式。简单地重申他的答案本身并不是一个答案。以上是关于如何在 mongodb 配置文件中设置授权?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 配置文件中设置 WebSSOProfileConsumerImpl