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

本地可正常连接MongoDB,K8s服务器报Unauthorized错误求助

Mongoose连接MongoDB在K8s中出现Unauthorized错误(code:13)的排查与解决

问题场景

  • 本地环境执行代码mongoose.connect(URL, mongoConfig);可正常连接MongoDB
  • K8s服务器环境中返回认证失败错误:

"ok": 0,
"code": 13,
"codeName": "Unauthorized"

排查与解决方法

1. 检查连接URL的认证有效性

  • 确认K8s环境使用的MongoDB连接URL中,用户名、密码、认证数据库(默认是admin)是否正确。本地可能配置了正确凭证,但K8s中环境变量注入的凭证可能存在错误,比如密码包含特殊字符未做URL转义(如@需转成%40、:转成%3A)。
  • 标准URL格式示例:mongodb://username:encoded-password@host:port/dbname?authSource=admin

2. 验证K8s与MongoDB的网络权限

  • 如果MongoDB部署在外部(云服务商或独立服务器),检查防火墙/安全组规则是否允许K8s集群的IP段访问MongoDB端口(默认27017)。
  • 若MongoDB是K8s内部的StatefulSet,确认服务名称、端口配置正确,且Pod的ServiceAccount拥有访问MongoDB服务的权限(若开启了RBAC)。

3. 补全Mongoose的认证配置

  • 检查mongoConfig是否包含必要的认证参数,避免依赖默认配置导致K8s环境中认证失败:
const mongoConfig = {
  auth: {
    username: 'your-username',
    password: 'your-password'
  },
  authSource: 'admin', // 指定MongoDB的认证数据库
  useNewUrlParser: true,
  useUnifiedTopology: true
};

4. 确认MongoDB用户权限

  • 检查MongoDB中对应用户是否拥有目标数据库的读写权限,避免本地使用超级用户、K8s使用权限不足的用户:
    执行MongoDB命令验证:
use admin
db.getUser('your-username')

确保用户的roles字段包含目标数据库的readWrite权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:10:34