1398 字
约 4 分钟
34
Docker 安装 MySQL(图文教程)

\n# Docker 安装 MySQL(图文教程)\n\n本小节中,我们将学习如何通过 Docker , 快速在阿里云 Linux 云服务器中,将 MySQL 环境安装好。\n\n## 1. 下载 MySQL 镜像\n\n首先,远程登录云服务器,执行如下命令,拉取 MySQL 5.7 版本的镜像:\n\n\ndocker pull mysql:5.7\n\n\nDocker 拉取 MySQL 环境\n\n镜像下载完成后,通过 docker images 查看本机已经下载的镜像列表,检查一下 MySQL 5.7 的镜像是否下载成功:\n\nDocker 查看本地已下载的镜像\n\n## 2. 启动 MySQL 容器\n\n镜像下载成功后,我们先以最简单的方式启动容器,执行命令如下:\n\n\ndocker run -d \\\n--name mysql \\\n-p 3306:3306 \\\n-e MYSQL_ROOT_PASSWORD=123456 \\\nmysql:5.7\n\n\n参数说明:\n\n- -d:以后台的方式运行;\n- --name mysql:指定容器的名称为 mysql;\n- -p 3306:3306 将宿主机的 3306 端口挂载到容器中的 3306 端口上;\n- -e MYSQL_ROOT_PASSWORD=123456:指定 root 用户的密码为 123456;\n\n命令执行后,可以通过 docker ps命令来查看正在运行的 Docker 容器,确认下 MySQL 容器是否运行成功:\n\nDocker 启动 MySQL 容器\n\n## 3. 复制 MySQL 容器中配置文件到宿主机\n\n接下来,执行下面的命令,创建一个 /docker/mysql 文件夹,专门用于存放 MySQL 相关文件,如配置文件、存储的数据等:\n\n\nmkdir -p /docker/mysql\n\n\n然后,执行 docker cp 命令,将运行中的 mysql 容器中的配置文件目录,复制到宿主机中的 /docker/mysql/config 目录中:\n\n\n# 将容器中的 mysql 配置文件复制到宿主机中指定路径下\ndocker cp mysql:/etc/mysql /docker/mysql/config\n\n\nDocker 复制容器中的配置文件到宿主机\n\n复制成功后,通过 ll 命令确认下 /docker/mysql/config 目录中的文件,可以看到,MySQL 相关的配置文件都从容器中复制到宿主机中了,这样方便后续如果有自定义配置的需求:\n\n查看 MySQL 配置文件目录文件\n\n## 4. 重新运行容器,挂载存储数据\n\n注意了,使用上面这种方式启动的容器,因为未将容器中数据目录挂载到宿主机中,会导致容器重启后,存于容器中的数据会全部丢失,所以,我们需要将正在运行的 MySQL 容器删除掉,重新运行一个 MySQL 容器,并将数据存储目录挂载到宿主机上,另外还有配置文件也需要一并挂载出来:\n\n1. MySQL 配置文件;\n2. 数据存储目录;\n\n执行如下命令,将刚刚运行的 MySQL 容器删除掉:\n\n\ndocker rm -f mysql\n\n\n> PS: mysql 是我们运行容器时指定的名称,当然,你也可以通过容器 ID 来删除容器。\n\n容器删除成功后,重新运行 MySQL 容器 , 命令如下:\n\n\ndocker run -d \\\n--name mysql \\\n-p 3306:3306 \\\n-v /docker/mysql/config:/etc/mysql \\\n-v /docker/mysql/data:/var/lib/mysql \\\n-e MYSQL_ROOT_PASSWORD=123456 \\\nmysql:5.7\n\n\n和之前运行的方式不太一样的地方是,这次额外添加了两个目录挂载参数:\n\n- -v /docker/mysql/config:/etc/mysql: 将宿主机中 /docker/mysql/config 配置文件目录挂载到容器中的 /etc/mysql 目录上 ;\n- -v /docker/mysql/data:/var/lib/mysql: 将宿主机中的 /docker/mysql/data 数据存储目录挂载到 /var/lib/mysql 目录上 ;\n\n命令执行后,通过 docker ps 命令,确认一下容器是否启动成功:\n\n重新运行 MySQL 容器\n\n## 5. 阿里云安全组开放\n\n到这里,MySQL 数据库环境就安装完成了。接下来,我们将通过 Navicat 连接一下这个远程的数据库,看看能不能连接成功。当然直接连肯定是不行的,我们需要在阿里云后台中,给购买的服务器开放 3306 端口才行。为了保证安全性,我们只给自己的 IP 开放白名单,保证只有自己的机器才能链接。\n\n这就需要拿到自己的 IP 地址,可以在百度中查询关键词 ip , 即可获取自己的 IP 地址:\n\n如果百度查询不到,也可以访问这个网站:https://www.ip138.com/ , 也是能够查询到你的 IP 地址的:\n\n将自己的 IP 地址复制出来,然后,访问阿里云 ECS 控制台:https://ecs.console.aliyun.com/home#/ , 点击云服务器:\n\n然后,选择安全组,点击管理规则:\n\n在入方向列表中,添加自己的 IP 地址,开放的端口为 3306 并保存。这样,就能保证只有自己的机器才能访问到该数据库了。\n\n## 6. 客户端连接测试\n\n端口白名单添加完成后,打开 Navicat 客户端 , 连接刚刚创建的 MySQL 数据库 , 看看能否连接成功:\n\n客户端连接 MySQL\n\n填写连接名、云服务器的公网 IP 、以及登录用户名、密码,点击测试连接按钮,如下图所示,连接成功了啦:\n\n## 7. 相关问题补充\n\n### 7.1 时区少 8 小时的问题\n\n在向数据库插入数据时,总是发现时间比系统时间少 8 个小时,这是因为 MySQL 的时区并不是我们想要的东八区。\n\n解决方案:修改挂载到宿主机的 MySQL 配置文件 mysqld.cnf ,添加如下参数:\n\n\ndefault-time-zone = '+08:00'\n\n\n添加改配置后,重启 MySQL 容器, 再插入数据,这个时候,插入的数据时间就正常了:\n\n\ndocker restart mysql\n

Docker 安装 MySQL(图文教程)
https://clxhxhhr.top/posts/1273/
作者
clxstart
发布于
2026-04-15
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。