K8s Pod中MySQL root用户无法列库及应用连接问题求助
解决MySQL权限问题及应用连接故障
问题根源
你执行的授权命令GRANT ALL ON root.* TO 'root'@'localhost'存在错误:root.*仅代表root数据库下的所有表,而非所有数据库,导致root@localhost用户仅能访问root库和默认的information_schema,无法查看其他业务数据库。
同时,应用连接失败的核心原因是:K8s Secret更新后,MySQL内部root@%用户的密码未同步更新(Secret是K8s层面的配置,不会自动修改MySQL用户表中的密码)。
修复步骤
1. 恢复root@localhost的全数据库权限
登录到MySQL Pod的localhost root用户,执行以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
执行后重新登录,即可看到所有数据库。
2. 同步root@%用户的密码与K8s Secret
在MySQL命令行中,执行以下命令(替换your-secret-password为K8s Secret中存储的MySQL root密码):
ALTER USER 'root'@'%' IDENTIFIED BY 'your-secret-password'; FLUSH PRIVILEGES;
3. 验证应用连接
重启应用的Deployment,让应用重新读取Secret中的密码,即可正常连接MySQL。
内容的提问来源于stack exchange,提问作者bigDaddy
相关产品推荐
相关产品推荐

