温馨提示×

linux mongodb配置如何认证

小樊
46
2026-10-07 07:45:00
栏目: 云计算

在 Linux 上配置 MongoDB 认证,通常分为 启用访问控制 和 创建用户 两个步骤。下面以 MongoDB 4.x / 5.x / 6.x 为例说明(社区版)。


一、修改 MongoDB 配置文件

MongoDB 的配置文件一般在:

/etc/mongod.conf

1. 启用认证

编辑配置文件:

sudo vim /etc/mongod.conf

在 security 节点下添加:

security:
  authorization: enabled

如果是旧版本(2.6 之前)可能用 auth = true,但新版本必须用 YAML 格式。


二、先在无认证模式下创建管理员用户

⚠️ 重要:
在开启 authorization: enabled 之前,必须先有一个管理员用户,否则无法登录。

1. 临时关闭认证(如果已开启)

如果已经开启认证但没用户,可暂时注释掉:

# security:
#   authorization: enabled

然后重启 MongoDB:

sudo systemctl restart mongod

2. 连接 MongoDB

mongo
# 或(新版)
mongosh

3. 创建管理员用户

use admin

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

三、启用认证并重启

编辑配置文件:

security:
  authorization: enabled

重启 MongoDB:

sudo systemctl restart mongod

四、使用账号登录

方式一:命令行登录

mongo -u admin -p --authenticationDatabase admin

或:

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

方式二:连接后认证

use admin
db.auth("admin", "StrongPassword")

五、为业务数据库创建用户(推荐)

不要所有业务都用 admin 用户。

use mydb

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

登录方式:

mongo -u appuser -p --authenticationDatabase mydb

六、验证认证是否生效

尝试无账号连接:

mongo

执行:

show dbs

如果提示 not authorized,说明认证已生效 ✅


七、常见问题

1. 忘记管理员密码

  • 停掉 MongoDB
  • 用 --noauth 启动
  • 重新创建/修改用户

2. 配置文件格式错误

  • YAML 对缩进敏感
  • 使用空格,不要 Tab

3. 防火墙

sudo ufw allow 27017

如果你需要:

  • MongoDB 副本集认证
  • Docker 中 MongoDB 认证
  • Spring / Node / Python 连接配置

可以继续问我。

0 踩