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

Docker部署MongoDB连接报错:未授权执行数据库命令

解决MongoDB未授权访问test数据库的问题

问题原因

错误提示MongoServerError: not authorized on test to execute command,核心原因是你使用的athul是MongoDB的root用户,该用户默认仅在admin数据库拥有最高权限,直接访问test数据库时会被权限系统拒绝。


解决方案

方案1:修改连接字符串指定认证数据库

在mongoose连接URL后添加?authSource=admin,让MongoDB使用admin数据库完成身份验证,验证通过后即可正常访问test数据库:

const connect=()=>{
  mongoose.connect(`mongodb://athul:athul@mongodb-server:27017/test?authSource=admin`).then(() => {
      console.log("connected to db");
  })
  .catch((err) => {
      console.log("not connected to db", err);
  });
}

方案2:创建test数据库专用用户(更安全)

如果不想用root用户操作业务数据库,建议创建仅拥有test数据库权限的专用用户:

  1. 进入MongoDB容器终端:
docker exec -it mongodb-server mongosh -u athul -p athul --authenticationDatabase admin
  1. 切换到test数据库:
use test
  1. 创建具备读写权限的用户:
db.createUser({
  user: "test_app_user",
  pwd: "your_secure_password",
  roles: [{ role: "readWrite", db: "test" }]
})
  1. 更新连接字符串使用新用户:
const connect=()=>{
  mongoose.connect(`mongodb://test_app_user:your_secure_password@mongodb-server:27017/test`).then(() => {
      console.log("connected to db");
  })
  .catch((err) => {
      console.log("not connected to db", err);
  });
}

内容的提问来源于stack exchange,提问作者ATHUL SURESH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:22:36