直接原因是配置文件格式错误导致mongod无法识别security选项,YAML缩进不规范、编码非ASCII/UTF-8无BOM、空格与Tab混用或security块书写错误(如写成security.authorization: enabled)均会触发“Unrecognized option: security”报错。

直接原因:mongod 启动时读取配置失败,不是授权本身出错,而是配置加载阶段就卡死了。
配置文件格式错误导致 security 选项被忽略
报错 Unrecognized option: security 表明 mongod 根本没识别到 security 这个配置项。这不是权限问题,而是 YAML 解析失败。
- YAML 对缩进极其敏感:
security:必须顶格,authorization: true必须严格缩进 2 个空格(不能用 Tab) - 配置文件编码必须是 ASCII 或 UTF-8 without BOM;Windows 上用记事本另存为 ANSI 编码反而更稳
- 常见手误:
security.authorization: enabled是无效写法,正确是:security: authorization: true
systemctl 启动失败但无明显报错
执行 systemctl start mongod 返回 failed,但 systemctl status mongod 只显示 exited with error number 1 —— 这是典型的“配置加载失败”信号。
- 先查日志:
journalctl -u mongod -n 50 -f,重点看第一行是否含Failed to load config file或error parsing yaml - 手动验证配置:
mongod --config /etc/mongod.conf --dryRun,它会立即报出 YAML 语法错误位置 - 注意:如果之前用
mongod --install注册过服务,改了配置后必须重新 install 才生效,否则 systemctl 仍用旧参数
权限与路径冲突在开启 authorization 前就已存在
很多人以为加了 authorization: true 才触发权限问题,其实不是——只要配置里写了 security,mongod 就会在启动早期校验 keyFile(如果启用了)或 admin 用户是否存在,此时若路径不可读、keyFile 权限不对,就会静默失败。
- keyFile 文件必须由
mongod用户可读(chmod 400 /path/to/keyfile && chown mongod:mongod /path/to/keyfile) - 即使没配 keyFile,只要写了
security.authorization: true,mongod 也会尝试连接本地实例做用户校验,此时若dbPath下没有初始化过的 admin 数据库,可能卡住 - 最稳妥做法:先注释掉整个
security块,确认 mongod 能正常启动并连上mongo,再逐步启用认证
真正容易被忽略的点是:security.authorization 不是开关,而是一条启动检查链的起点。它会触发对 keyFile、admin 用户、配置格式、目录权限的连带校验,任一环节失败都会表现为“启动失败”,但错误日志往往藏在 mongod.log 最开头几行,而不是 systemctl status 的输出里。











