Docker中部署MySQL 5.7并远程连接Navicat的完整指南
作者:码农阿豪@新空间
MySQL是最流行的关系型数据库之一,而Docker提供了轻量级、可移植的容器化解决方案,本文将详细介绍如何在CentOS 7上使用Docker部署 MySQL 5.7,并通过Windows上的Navicat进行远程连接,需要的朋友可以参考下
引言
MySQL 是最流行的关系型数据库之一,而 Docker 提供了轻量级、可移植的容器化解决方案。本文将详细介绍如何在 CentOS 7 上使用 Docker 部署 MySQL 5.7,并通过 Windows 上的 Navicat 进行远程连接。内容涵盖:
- Docker 安装与 MySQL 容器部署
- MySQL 5.7 的配置与权限管理
- Navicat 远程连接及常见问题排查
- 安全优化建议
适用于 开发、测试及生产环境,确保数据持久化、高可用性和安全性。
1. Docker 环境准备
1.1 安装 Docker(CentOS 7)
在 CentOS 7 上安装 Docker:
# 安装依赖 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 docker-ce docker-ce-cli containerd.io -y # 启动并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 验证安装 docker --version
输出应类似:
Docker version 20.10.12, build e91ed57
2. 部署 MySQL 5.7 容器
2.1 拉取 MySQL 5.7 镜像
docker pull mysql:5.7
2.2 运行 MySQL 容器
(1)基本运行方式(适合测试)
docker run -d \ --name mysql57 \ -e MYSQL_ROOT_PASSWORD=yourpassword \ -p 3306:3306 \ mysql:5.7
(2)生产环境推荐(数据持久化+自动重启)
docker run -d \ --name mysql57 \ -e MYSQL_ROOT_PASSWORD=yourpassword \ -p 3306:3306 \ -v /data/mysql:/var/lib/mysql \ --restart unless-stopped \ mysql:5.7 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci \ --bind-address=0.0.0.0
参数说明:
-v /data/mysql:/var/lib/mysql
:数据持久化存储--restart unless-stopped
:容器异常退出时自动重启--bind-address=0.0.0.0
:允许远程连接
3. MySQL 远程访问配置
3.1 进入 MySQL 容器
docker exec -it mysql57 mysql -uroot -p
输入密码后进入 MySQL Shell。
3.2 创建远程访问用户
-- 创建新用户(避免直接使用 root) CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPass123!'; -- 授予所有权限(生产环境建议按需授权) GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES;
3.3 检查用户权限
SELECT host, user FROM mysql.user;
输出应包含:
+-----------+-------------+ | host | user | +-----------+-------------+ | % | remote_user | | localhost | root | +-----------+-------------+
4. Windows Navicat 连接 Docker MySQL
4.1 确保网络可达
- 如果 Docker 运行在本地:直接使用
127.0.0.1:3306
- 如果 Docker 运行在远程服务器:
确保服务器防火墙开放 3306 端口:
sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
- 云服务器需配置安全组规则(如 AWS、阿里云)
4.2 Navicat 连接配置
- 打开 Navicat → 新建连接 → MySQL
- 填写连接信息:
- 连接名:Docker MySQL
- 主机:服务器IP(或
127.0.0.1
) - 端口:
3306
- 用户名:
remote_user
- 密码:
StrongPass123!
- 测试连接 → 确认
5. 常见问题排查
5.1 连接被拒绝
# 检查容器是否运行 docker ps # 查看端口映射 docker port mysql57 # 检查 MySQL 日志 docker logs mysql57
5.2 防火墙问题
# CentOS 7 开放端口 sudo firewall-cmd --list-ports sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
5.3 用户权限不足
-- 检查用户权限 SHOW GRANTS FOR 'remote_user'@'%';
6. 安全优化建议
- 避免使用 root 远程连接
限制访问 IP:
GRANT ALL ON *.* TO 'user'@'192.168.1.%' IDENTIFIED BY 'password';
启用 SSL 加密(可选):
docker run -v /mysql/ssl:/etc/mysql/ssl ... mysql:5.7 --ssl-ca=/etc/mysql/ssl/ca.pem --ssl-cert=/etc/mysql/ssl/server-cert.pem --ssl-key=/etc/mysql/ssl/server-key.pem
定期备份数据:
docker exec mysql57 mysqldump -uroot -p --all-databases > backup.sql
7. 总结
本文详细介绍了:
- Docker 部署 MySQL 5.7(含数据持久化)
- 远程用户权限配置
- Navicat 连接方法
- 故障排查与安全优化
通过 Docker 运行 MySQL 不仅简化了环境配置,还便于迁移和版本管理。结合 Navicat 的图形化管理,可极大提升开发效率。
适用场景:
- 本地开发测试
- 云服务器数据库部署
- 微服务架构中的数据库容器化
附录:完整 Docker Compose 示例
version: '3.8' services: mysql: image: mysql:5.7 container_name: mysql57 environment: MYSQL_ROOT_PASSWORD: yourpassword MYSQL_USER: remote_user MYSQL_PASSWORD: StrongPass123! ports: - "3306:3306" volumes: - /data/mysql:/var/lib/mysql restart: unless-stopped command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --bind-address=0.0.0.0
使用方式:
docker-compose up -d
以上就是Docker中部署MySQL 5.7并远程连接Navicat的完整指南的详细内容,更多关于Docker部署MySQL 5.7并连接Navicat的资料请关注脚本之家其它相关文章!