You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启MongoDB认证后Unifi Controller容器权限报错求助

解决Unifi Controller连接开启认证的MongoDB时的权限错误

问题诊断

从错误日志可知,unifi用户在unifi_stat库上没有执行listCollections命令的权限。核心原因是创建unifi_stat库的用户时,错误配置了unifi库的权限,且未正确赋予unifi_stat库所需的完整权限。

修复步骤

1. 临时关闭MongoDB认证

在Portainer中移除Mongo容器的--auth启动参数,重启Mongo容器,以便无认证连接修改用户权限。

2. 重新配置MongoDB用户权限

连接到MongoDB容器(执行命令:docker exec -it <你的Mongo容器名> mongosh),依次执行以下操作:

删除错误的unifi_stat库用户

use unifi_stat
db.dropUser("unifi")

重新创建unifi库用户(确保权限简洁正确)

use unifi
db.createUser({
  user: "unifi",
  pwd: "12345678",
  roles: [
    { role: "dbOwner", db: "unifi" } // dbOwner角色已包含readWrite、userAdmin及集合列表权限
  ]
});

创建正确的unifi_stat库用户

use unifi_stat
db.createUser({
  user: "unifi",
  pwd: "12345678",
  roles: [
    { role: "dbOwner", db: "unifi_stat" } // 直接赋予dbOwner角色,覆盖所有必要操作权限
  ]
});

3. 重启MongoDB并开启认证

在Portainer中为Mongo容器重新添加--auth启动参数,重启容器。

4. 修正Docker Compose环境变量

建议统一使用admin库作为认证源,避免多库认证冲突,修改环境变量如下:

environment:
  DB_URI: mongodb://unifi:12345678@test_mongo/unifi?authSource=admin
  STATDB_URI: mongodb://unifi:12345678@test_mongo/unifi_stat?authSource=admin
  DB_NAME: unifi

5. 重启Unifi Controller容器

重启Unifi Controller容器,观察日志是否仍存在权限错误。

关键说明

  • dbOwner角色已包含readWrite、userAdmin以及执行listCollections所需的权限,无需单独添加重复或跨库的角色配置。
  • 使用authSource=admin可让用户通过admin库的统一认证机制访问目标数据库,减少多库用户配置的混乱。

内容的提问来源于stack exchange,提问作者Sandro Buturishvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:35:02