在主机上连接Docker容器中的MySQL
如果您在Docker中运行MySQL,则可能需要在主机上连接到它来执行一些任务,例如备份或导入/导出数据。本文将介绍如何连接到Docker容器中的MySQL实例。
阅读更多:MySQL 教程
第1步 – 运行MySQL容器
我们将使用官方Docker Hub上的MySQL镜像来运行MySQL。您可以使用以下命令在容器中运行MySQL:
docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
该命令将在Docker容器中运行一个MySQL实例,并向其提供一个root密码。
注意:如果您使用的是Windows系统,请确保在命令行中将双引号替换为单引号。
第2步 – 连接到MySQL
在运行MySQL后, 您可以使用以下命令来进入容器并打开MySQL shell:
docker exec -it mysql-server mysql -uroot -p
该命令将连接到正在运行的MySQL实例,并提示您输入root密码。
第3步 – 允许从主机远程连接到MySQL
默认情况下,MySQL容器仅允许从容器本身连接。如果您要从主机上的MySQL客户端连接到MySQL容器,则需要更改MySQL容器的配置,以允许来自主机的远程连接。
要更改MySQL容器的配置,请使用以下命令进入容器:
docker exec -it mysql-server bash
然后,编辑MySQL配置文件my.cnf:
vi /etc/mysql/my.cnf
找到并取消注释以下行:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
在文件的末尾添加以下行:
[mysqld]
bind-address = 0.0.0.0
保存并退出文件。然后重新启动MySQL服务:
service mysql restart
注意:请勿更改MySQL的任何其他配置,除非您明确知道自己在做什么。
第4步 – 从主机连接到MySQL
完成上述步骤后,您现在可以从主机上的MySQL客户端连接到MySQL容器。您需要知道MySQL容器的IP地址才能连接到它。
如果您使用的是Linux系统,可以使用以下命令获取MySQL容器的IP地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-server
如果您使用的是Docker Desktop for Windows/Mac,则可以使用以下命令获取MySQL容器的IP地址:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-server
然后在主机上,在MySQL客户端中使用以下命令连接到MySQL容器:
mysql -uroot -h MYSQL_CONTAINER_IP -p
其中MYSQL_CONTAINER_IP是上一步中获取到的MySQL容器的IP地址。
总结
在本文中,我们介绍了如何连接到Docker容器中的MySQL实例,并允许来自主机的远程连接。这使得您可以在主机上执行一些任务,而无需登录到容器中。但是,请注意,在做任何更改之前,请三思而后行,并时刻保持备份。