远程连接MySQL的docker容器

xuwenke
4
2025-04-29

授权

登录服务器上的MySQL服务,进入MySQL,执行如下命令
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

我有一个docker容器,是之前部署halo博客创建的MySQL容器,绑定的ip地址是127.0.0.1,也就是只能在服务器本地内部使用,如果想要远程使用该MySQL容器,不太方便。

有两种解决办法,第一种就是创建一个新的容器供远程调用;第二种是通过ssh连接的服务器,在本地远程连接服务器上的该MySQL容器。

远程连接MySQL容器

这是一个运行MySQL 8.1.0的Docker容器,端口映射为127.0.0.1:3306->3306/tcp。

连接步骤

1. 开放容器访问

首先,需要注意到端口映射配置127.0.0.1:3306->3306/tcp,这意味着MySQL服务只绑定到本地回环地址,不能从远程直接访问。要允许远程连接,你需要修改端口映射:

# 停止当前容器

docker stop a65f30225de2

# 使用新的端口映射重新创建容器(替换下面命令中的参数为你的实际配置)

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 mysql:8.1.0

2. 远程连接方法

修改端口映射后,可以通过以下方式连接:

使用MySQL客户端工具

mysql -h 服务器IP地址 -P 3306 -u 用户名 -p

使用GUI工具

可以使用MySQL Workbench、Navicat、DBeaver等工具连接:

  • 主机: 服务器IP地址

  • 端口: 3306

  • 用户名: 你的MySQL用户名

  • 密码: 你的MySQL密码

3. 如果不想重建容器

如果你不想重建容器,可以使用SSH隧道:

ssh -L 33060:127.0.0.1:3306 用户名@服务器IP

然后在本地连接127.0.0.1:33060

4. 安全注意事项

  • 确保MySQL用户有远程访问权限

  • 考虑使用强密码

  • 可能需要配置防火墙允许3306端口的访问

  • 在生产环境中,建议使用SSL连接加密数据传输

如果你需要更详细的指导,请提供更多关于你的环境和需求的信息。