在 CentOS 7 虚拟机中使用 Docker 部署 MySQL 8.0 并通过 Navicat 远程连接
centos7中yum源失效问题解决:yum源失效导致docker安装失败问题解决
前言
本文详细记录了在 CentOS 7 虚拟机环境中,通过 Docker 容器化方式部署 MySQL 8.0+ 数据库的完整过程。包括环境准备、容器部署、数据持久化、端口映射、防火墙配置,以及如何从宿主机(Windows/macOS)使用 Navicat 成功连接数据库。适用于开发测试及学习场景。
📚 目录(点击跳转对应章节)
一、环境说明
[二、停止并清理原有 MariaDB(如有)](#二、停止并清理原有 MariaDB(如有))
[三、安装 Docker](#三、安装 Docker)
四、创建数据与配置目录
[五、启动 MySQL 8.0 容器](#五、启动 MySQL 8.0 容器)
六、验证容器运行状态
[七、配置防火墙放行 3306 端口](#七、配置防火墙放行 3306 端口)
[八、获取虚拟机 IP 地址](#八、获取虚拟机 IP 地址)
[九、Navicat 连接配置](#九、Navicat 连接配置)
十、验证远程连通性
十一、开机自启机制说明
一、环境说明
- 操作系统:CentOS Linux release 7.9
- 虚拟化平台:VMware Workstation(网络模式:桥接)
- Docker 版本:Docker CE
- 目标数据库:MySQL 8.0
- 客户端工具:Navicat Premium(版本 >= 15)
二、停止并清理原有 MariaDB(如有)
CentOS 7 默认安装 MariaDB,为避免冲突,建议先停止并卸载:
bash
# 停止服务
sudo systemctl stop mariadb
# 卸载相关包(可选,若已安装)
sudo yum remove -y mariadb-server mariadb mariadb-libs
注意:如需保留数据,请提前备份
/var/lib/mysql目录。
三、安装 Docker
若系统未安装 Docker,执行以下命令:
bash
# 安装依赖
sudo yum install -y yum-utils
# 添加 Docker 官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
验证安装:
bash
docker --version
四、创建数据与配置目录
为实现数据持久化和自定义配置,创建挂载目录:
bash
sudo mkdir -p /opt/mysql8/data
sudo mkdir -p /opt/mysql8/conf.d
# 设置权限(MySQL 容器内用户 UID 为 999)
sudo chown -R 999:999 /opt/mysql8/data
若需兼容旧客户端,可在
/opt/mysql8/conf.d/my.cnf中添加:
ini[mysqld] default_authentication_plugin=mysql_native_password
五、启动 MySQL 8.0 容器
执行以下命令运行容器:
bash
docker run -d \
--name mysql8 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123 \
-v /opt/mysql8/data:/var/lib/mysql \
-v /opt/mysql8/conf.d:/etc/mysql/conf.d \
-p 3306:3306 \
mysql:8.0
参数说明:
--restart=always:确保容器随 Docker 服务自动重启;-e MYSQL_ROOT_PASSWORD=123:设置 root 密码(仅用于测试,生产环境请使用强密码);-v:挂载数据和配置目录,实现持久化;-p 3306:3306:将宿主机 3306 端口映射到容器内部。
六、验证容器运行状态
bash
# 查看容器是否运行
docker ps -f name=mysql8
# 测试连接(通过容器内部)
docker exec -it mysql8 mysql -u root -p123 -e "SELECT VERSION();"
预期输出:
+-----------+
| VERSION() |
+-----------+
| 8.0.45 |
+-----------+
七、配置防火墙放行 3306 端口
由于虚拟机需对外提供服务,必须开放端口:
bash
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
验证:
bash
firewall-cmd --list-ports | grep 3306
八、获取虚拟机 IP 地址
在虚拟机中执行:
bash
ip addr show
找到主网卡(如 ens33)的 IPv4 地址,例如:
bash
inet 192.168.35.142/24
该 IP(192.168.35.142)即为 Navicat 连接时的主机地址。
九、Navicat 连接配置
在宿主机(Windows/macOS)上打开 Navicat,新建 MySQL 连接:
- 连接名:任意(如 VM-MySQL)
- 主机:(虚拟机 IP根据实际情况填写)
- 端口 :
3306 - 用户名 :
root - 密码 :
123
点击"测试连接",成功后即可保存并使用。
注意:
确保虚拟机网络为桥接模式,且与宿主机在同一局域网;
若提示认证插件错误,请升级 Navicat 至 15+ 版本,或在 MySQL 中执行:
sqlALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123'; FLUSH PRIVILEGES;
十、验证远程连通性
在宿主机命令行测试端口连通性:
bash
telnet 192.168.35.142 3306
若连接成功(屏幕变黑或出现乱码),说明网络和端口均正常。
十一、开机自启机制说明
-
Docker 服务 :通过
systemctl enable docker设置为系统级开机自启; -
MySQL 容器 :通过
--restart=always参数由 Docker 自动管理重启; -
验证容器重启策略:
bashdocker inspect mysql8 --format='{{.HostConfig.RestartPolicy.Name}}'输出应为
always
通过以上的操作成功用docker部署了mysql并且使用navicat连接上了mysql