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

部署Kubernetes MongoDB StatefulSet时认证失败求助

解决MongoDB StatefulSet认证失败问题

核心问题:认证数据库指定错误

MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 环境变量创建的是root超级用户,该用户默认存储在admin数据库中,而非你配置的ng-db。你当前连接时指定--authenticationDatabase ng-db,导致MongoDB去错误的数据库查找用户,直接引发认证失败。

修正连接命令

执行以下命令,将认证数据库指定为admin:

mongo -u test -ptest --authenticationDatabase admin

其他可能的问题排查

如果修正连接命令后仍然失败,逐一检查以下项:

1. 持久化存储卷存在旧数据

若你的local-storage存储卷之前已有MongoDB数据,容器初始化脚本不会重新执行,导致预设的用户名密码未被创建。解决步骤:

  • 删除对应PersistentVolumeClaim:
    kubectl delete pvc mongo-persistent-storage-mongo-0 -n ng-mongo
    
  • 删除并重新部署StatefulSet:
    kubectl delete statefulset mongo -n ng-mongo
    kubectl apply -f 你的MongoDB配置文件.yaml
    

2. 确认MongoDB启用认证

检查容器日志,确认启动参数包含--auth:

kubectl logs mongo-0 -c mongo -n ng-mongo

若未找到--auth参数,需在StatefulSet的mongo容器中添加启动命令:

containers:
- name: mongo
  image: mongo             
  command: ["mongod", "--auth"]
  ports:
    - containerPort: 27017
  # 其余配置保持不变

3. 暂时移除sidecar容器

cvallance/mongo-k8s-sidecar用于MongoDB集群搭建,当前你仅部署单节点副本,可暂时移除该sidecar容器,避免其在初始化阶段干扰MongoDB启动,待认证问题解决后再按需添加。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:40:31