1. MySQL 容器部署详解
MySQL 采用客户端-服务端架构,其中服务端运行在容器中,客户端用于访问数据库。
我们将部署流程分为以下三部分:
1.1 MySQL 服务端部署
我们可以使用官方镜像来部署 MySQL 容器。建议使用 latest
标签,除非你有特定版本需求。
✅ 推荐步骤:
使用
docker pull
拉取镜像:docker pull mysql:latest
启动容器并设置 root 用户密码:
docker run --name bael-mysql-demo -e MYSQL_ROOT_PASSWORD=baeldung -d mysql:latest
查看运行中的容器:
docker ps
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fedf880ce2b6 mysql:latest "docker-entrypoint.s…" 17 seconds ago Up 16 seconds 3306/tcp, 33060/tcp bael-mysql-demo
1.2 MySQL 客户端安装
在宿主机或其他机器上安装 MySQL 客户端,用于连接容器中的数据库:
安装命令(以 Ubuntu 为例):
sudo apt install mysql-client -y
查看安装路径和版本:
which mysql mysql --version
输出示例:
/usr/bin/mysql
mysql Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using EditLine wrapper
1.3 建立连接
直接使用 mysql -u root -p
登录会报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
⚠️ 错误原因:MySQL 服务运行在容器内,而非宿主机上。因此不能使用默认的 socket 连接方式,而应使用 TCP 协议连接容器 IP。
✅ 正确连接方式:
- 获取容器 IP 地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' bael-mysql-demo
输出示例:
172.17.0.2
- 使用 IP + 端口连接数据库:
mysql -h 172.17.0.2 -P 3306 --protocol=tcp -u root -p
输入密码后成功进入 MySQL 命令行界面,可执行 SQL 命令,例如:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
2. 总结
本文详细介绍了如何在 Docker 环境中部署 MySQL 容器、安装客户端,并通过 TCP 协议连接数据库。关键点在于:
- 容器中的 MySQL 服务与宿主机是隔离的
- 不能使用默认 socket 连接方式
- 必须通过容器 IP + 端口进行 TCP 连接
掌握这些内容后,你就可以顺利在容器环境中使用 MySQL 了。