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

如何通过Docker部署MySQL服务器并解决外部连接问题?

解决Docker部署MySQL无法外部连接的问题

1. 修正启动命令的语法错误

你原命令中存在参数拼接错误:--name mysql-docker-eMYSQL_ROOT_PASSWORD=XXXX将容器名称与环境变量参数混在一起了,正确的启动命令应为:

docker run -p 33060:3306 --name mysql-docker -e MYSQL_ROOT_PASSWORD=XXXX -d mysql

参数说明:

  • -p 33060:3306:将主机的33060端口映射到容器内的MySQL默认3306端口
  • --name mysql-docker:指定容器的自定义名称
  • -e MYSQL_ROOT_PASSWORD=XXXX:设置MySQL root用户的密码
  • -d mysql:后台运行官方MySQL镜像

2. 授权root用户远程访问

MySQL默认root账号仅允许localhost本地连接,需手动开放远程权限:

  1. 进入运行中的MySQL容器:
docker exec -it mysql-docker bash
  1. 登录MySQL控制台:
mysql -uroot -pXXXX
  1. 执行授权语句(若需限制特定IP,将%替换为目标IP地址):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'XXXX' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  1. 依次退出MySQL控制台和容器:
EXIT;
exit

3. 确认MySQL绑定地址

部分MySQL版本默认仅绑定127.0.0.1,需修改配置允许绑定所有网卡:

  1. 在主机创建自定义配置文件my.cnf,添加以下内容:
[mysqld]
bind-address = 0.0.0.0
  1. 停止并删除原有容器,重新启动时挂载自定义配置:
docker stop mysql-docker
docker rm mysql-docker
docker run -p 33060:3306 --name mysql-docker -e MYSQL_ROOT_PASSWORD=XXXX -v /主机路径/my.cnf:/etc/mysql/my.cnf -d mysql

将/主机路径/my.cnf替换为你实际存放配置文件的路径

4. 外部连接验证

使用客户端工具连接时,需填写:

  • 主机:服务器公网IP
  • 端口:33060(对应主机映射的端口)
  • 用户名:root
  • 密码:你设置的XXXX

若仍无法连接,额外检查:

  • 云服务商的安全组规则是否开放33060端口的入站流量
  • 主机本地防火墙(如firewalld、iptables)是否允许33060端口的外部访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:46:03