温馨提示×

Debian MongoDB如何开启认证

小樊
53
2026-08-17 09:29:10
栏目: 云计算

在 Debian 上给 MongoDB 开启认证(Authentication),通常按下面步骤来即可(以 MongoDB 6.x / 7.x + deb 包 为例,适用于 Debian 11/12)。


一、修改 MongoDB 配置文件

MongoDB 的配置文件一般在:

/etc/mongod.conf

编辑它:

sudo nano /etc/mongod.conf

1️⃣ 开启认证

找到或添加 security 配置项:

security:
  authorization: enabled

⚠️ 注意 YAML 格式,缩进必须是两个空格


2️⃣ 确认监听地址(可选但推荐)

如果你希望远程也能访问(先确认安全):

net:
  port: 27017
  bindIp: 0.0.0.0

如果只是本机使用:

bindIp: 127.0.0.1

二、重启 MongoDB

sudo systemctl restart mongod

检查状态:

sudo systemctl status mongod

三、创建管理员用户(关键步骤)

⚠️ 先不要开启认证,否则你进不去。

1️⃣ 先关闭认证(如果已开启)

临时把:

security:
  authorization: enabled

改为:

# security:
#   authorization: enabled

重启 MongoDB:

sudo systemctl restart mongod

2️⃣ 进入 MongoDB Shell

mongosh

(老版本是 mongo


3️⃣ 创建管理员用户

use admin

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

✅ 推荐角色:

  • root:超级管理员
  • userAdminAnyDatabase:用户管理
  • readWriteAnyDatabase:读写所有库

4️⃣ 退出 Mongo Shell

exit

四、正式开启认证

再次编辑配置文件:

sudo nano /etc/mongod.conf

启用认证:

security:
  authorization: enabled

重启 MongoDB:

sudo systemctl restart mongod

五、使用认证方式登录

方式 1:命令行登录

mongosh -u admin -p --authenticationDatabase admin

输入密码即可。


方式 2:连接字符串

mongosh "mongodb://admin:StrongPassword123@localhost:27017/admin"

六、为某个数据库创建普通用户(示例)

use mydb

db.createUser({
  user: "appuser",
  pwd: "AppPass456",
  roles: [
    { role: "readWrite", db: "mydb" }
  ]
})

七、常见问题

❌ 1. 开启认证后无法登录

✅ 原因:没有先创建管理员用户
✅ 解决:临时关闭认证,创建用户后再开启


❌ 2. YAML 格式错误导致 MongoDB 启动失败

检查:

sudo mongod --config /etc/mongod.conf

或查看日志:

sudo journalctl -u mongod -xe

八、安全建议(生产环境)

✅ 不要使用 root 角色给业务程序
✅ 使用强密码
✅ 限制 bindIp
✅ 考虑启用 TLS/SSL
✅ 使用防火墙限制端口


如果你愿意,可以告诉我:

  • MongoDB 版本(mongod --version)
  • Debian 版本
  • 是否用于生产环境

我可以给你一份 生产级安全配置示例

0