> 技术文档 > Docker 中部署 MySQL 5.7 并远程连接 Navicat 的完整指南

Docker 中部署 MySQL 5.7 并远程连接 Navicat 的完整指南


个人名片
在这里插入图片描述
🎓作者简介:java领域优质创作者
🌐个人主页:码农阿豪
📞工作室:新空间代码工作室(提供各种软件服务)
💌个人邮箱:[2435024119@qq.com]
📱个人微信:15279484656
🌐个人导航网站:www.forff.top
💡座右铭:总有人要赢。为什么不能是我呢?

  • 专栏导航:

码农阿豪系列专栏导航
面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️
Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻
Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡
全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀

目录

  • Docker 中部署 MySQL 5.7 并远程连接 Navicat 的完整指南
    • 引言
    • 1. Docker 环境准备
      • 1.1 安装 Docker(CentOS 7)
    • 2. 部署 MySQL 5.7 容器
      • 2.1 拉取 MySQL 5.7 镜像
      • 2.2 运行 MySQL 容器
        • (1)基本运行方式(适合测试)
        • (2)生产环境推荐(数据持久化+自动重启)
    • 3. MySQL 远程访问配置
      • 3.1 进入 MySQL 容器
      • 3.2 创建远程访问用户
      • 3.3 检查用户权限
    • 4. Windows Navicat 连接 Docker MySQL
      • 4.1 确保网络可达
      • 4.2 Navicat 连接配置
    • 5. 常见问题排查
      • 5.1 连接被拒绝
      • 5.2 防火墙问题
      • 5.3 用户权限不足
    • 6. 安全优化建议
    • 7. 总结

Docker 中部署 MySQL 5.7 并远程连接 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# 安装 Dockersudo yum install docker-ce docker-ce-cli containerd.io -y# 启动并设置开机自启sudo systemctl start dockersudo 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 --permanentsudo firewall-cmd --reload
    • 云服务器需配置安全组规则(如 AWS、阿里云)

4.2 Navicat 连接配置

  1. 打开 Navicat → 新建连接 → MySQL
  2. 填写连接信息:
    • 连接名:Docker MySQL
    • 主机:服务器IP(或 127.0.0.1
    • 端口:3306
    • 用户名:remote_user
    • 密码:StrongPass123!
  3. 测试连接 → 确认

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 (示意图)


5. 常见问题排查

5.1 连接被拒绝

# 检查容器是否运行docker ps# 查看端口映射docker port mysql57# 检查 MySQL 日志docker logs mysql57

5.2 防火墙问题

# CentOS 7 开放端口sudo firewall-cmd --list-portssudo firewall-cmd --add-port=3306/tcp --permanentsudo firewall-cmd --reload

5.3 用户权限不足

-- 检查用户权限SHOW GRANTS FOR \'remote_user\'@\'%\';

6. 安全优化建议

  1. 避免使用 root 远程连接
  2. 限制访问 IP:
    GRANT ALL ON *.* TO \'user\'@\'192.168.1.%\' IDENTIFIED BY \'password\';
  3. 启用 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
  4. 定期备份数据:
    docker exec mysql57 mysqldump -uroot -p --all-databases > backup.sql

7. 总结

本文详细介绍了:

  • Docker 部署 MySQL 5.7(含数据持久化)
  • 远程用户权限配置
  • Navicat 连接方法
  • 故障排查与安全优化

通过 Docker 运行 MySQL 不仅简化了环境配置,还便于迁移和版本管理。结合 Navicat 的图形化管理,可极大提升开发效率。

适用场景:

  • 本地开发测试
  • 云服务器数据库部署
  • 微服务架构中的数据库容器化

进一步学习:

  • MySQL 8.0 容器化部署
  • 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

版权声明
© 2023 数据库与 Docker 实践指南。转载请注明出处。