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

使用defaults-extra-file登录Docker部署的MySQL出现1045访问拒绝问题

问题核心原因
  • 最主要的原因是MySQL配置文件的段名错误:[mysqld]是MySQL服务端进程读取的配置段,而你使用的mysql客户端命令只会读取[client]段下的账号、密码配置。你把user、password配置写到了[mysqld]段下,客户端读取不到对应配置,就会默认使用root用户无密码尝试登录,触发报错。
  • 次要可能原因:容器内/etc/mysql_pass.cnf文件权限过高,MySQL客户端出于安全考虑会忽略权限大于600的配置文件,导致配置不生效。
解决方案
  1. 修改容器内/etc/mysql_pass.cnf的配置段,将[mysqld]改为[client],修改后内容如下:
[client]
user=user1
password=pass2
  1. 调整配置文件权限,确保MySQL客户端可以正常读取:
docker exec DOCKER_NAME chmod 600 /etc/mysql_pass.cnf
  1. 手动执行测试命令验证配置是否生效,确认返回的登录用户为user1:
docker exec DOCKER_NAME mysql --defaults-extra-file=/etc/mysql_pass.cnf -e "SELECT USER();"
  1. 调整你脚本中的命令参数,避免变量解析异常,修改后参考如下:
mysqlDate=$(docker exec DOCKER_NAME mysql --defaults-extra-file=/etc/mysql_pass.cnf -D "$db" -se "SQL_QUERY;")
  1. 可选排查:如果上述操作后仍然报错,先直接指定账号密码登录验证账号本身有效性,排除账号密码错误、权限不足的问题:
docker exec DOCKER_NAME mysql -uuser1 -ppass2 -e "SELECT USER();"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:36:02