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

Mac Docker Desktop的K8s集群中MySQL无法登录问题咨询

问题分析与修复方案

嘿,我一眼就揪出问题所在了——你的MySQL密码配置里藏了个隐形的换行符!

先看你Secret里的mysql-root-password值:cm9vdAo=,咱们解码看看:

echo "cm9vdAo=" | base64 -d

输出是root后面跟着一个换行符(root\n)。也就是说,MySQL实际使用的密码是带换行的root\n,但你输入的是纯root,这当然会被拒绝啦!

为什么会出现这个问题?

你应该是用echo "root" | base64生成的编码,而默认情况下echo会在输出末尾自动加换行符,导致编码结果包含了这个多余的换行。正确的生成方式应该用echo -n "root" | base64,这样就不会额外添加换行。

具体修复步骤

  • 先删掉现有的有问题的Secret:
    kubectl delete secret mysql
    
  • 重新生成正确的base64编码(不带换行):
    echo -n "root" | base64
    
    这次得到的结果应该是cm9vdA==(注意末尾是两个等号)。
  • 修改你的mysql.yaml里的Secret部分,把密码字段换成新的编码:
    apiVersion: v1
    kind: Secret
    metadata:
      name: mysql
    type: Opaque
    data:
      mysql-root-password: cm9vdA==
    
  • 重新应用配置:
    kubectl apply -f mysql.yaml
    
    或者更快捷的方式:直接删掉当前的MySQL Pod,Deployment会自动拉取新的Pod使用更新后的Secret:
    kubectl delete pod mysql-6c794ccb7b-dz9f4
    

额外注意点

如果重新创建Pod后还是登录失败,那大概率是之前的PersistentVolume已经存储了初始化后的MySQL数据(MySQL第一次启动时会把密码写入存储卷,之后不会再读取环境变量)。这种情况下,你需要删除现有的PVC,让K8s重新分配一个干净的存储卷:

kubectl delete pvc mysql

然后再重新应用配置文件,MySQL会重新初始化,使用新的正确密码。

等新Pod跑起来后,再进去执行mysql -u root -p,输入root就可以正常登录啦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:31:10