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

 更新时间:2025年07月03日 09:02:40   作者:码农阿豪@新空间  
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 连接配置

  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-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

5.3 用户权限不足

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

6. 安全优化建议

  1. 避免使用 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的资料请关注脚本之家其它相关文章!

相关文章

  • Docker新手实践及部署NGINX的步骤详解

    Docker新手实践及部署NGINX的步骤详解

    最近工作中有个需求, 用docker去部署nginx的静态服务器。仔细观察这个命题,看似不难,但实际其中的注意点很多,新手很容易搞错,所以下面这篇文章主要给大家介绍了关于Docker新手实践及部署NGINX的步骤,需要的朋友可以参考下。
    2017-11-11
  • docker修改容器的端口、容器名、映射地址以及注意事项

    docker修改容器的端口、容器名、映射地址以及注意事项

    在日常的docker运维中,经常遇到修改容器的端口、容器名、映射地址等信息,这篇文章主要给大家介绍了关于docker修改容器的端口、容器名、映射地址以及注意事项的相关资料,需要的朋友可以参考下
    2022-08-08
  • Docker 容器连接的具体实现

    Docker 容器连接的具体实现

    本文主要介绍了Docker 容器连接的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 解决Ubuntu中Docker安装时“无法找到软件包”错误的解决方案

    解决Ubuntu中Docker安装时“无法找到软件包”错误的解决方案

    在Ubuntu中安装Docker时遇到“无法找到软件包”错误,通常是由于软件源未正确配置或更新、软件包名称错误或已更改等原因造成的,解决方法包括添加Docker官方软件源、更新软件包列表、重新安装Docker等
    2026-01-01
  • docker部署Minio报错:Fatal glibc error:CPU does not support x86-64-v2问题

    docker部署Minio报错:Fatal glibc error:CPU does&nb

    在CentOS 7上使用Docker部署Minio时遇到CPU不支持问题,通过研究确定是版本太新,由于项目经费有限,决定降级到CentOS 7,步骤包括拉取Minio镜像、创建目录、开放端口和运行
    2024-12-12
  • docker利用WebHook实现持续集成

    docker利用WebHook实现持续集成

    这篇文章主要介绍了docker利用WebHook实现持续集成的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • docker网络及部署集群和打包镜像问题

    docker网络及部署集群和打包镜像问题

    这篇文章主要介绍了docker网络及部署集群和打包镜像问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • docker报错Container is not running问题及解决

    docker报错Container is not running问题及解决

    这篇文章主要介绍了docker报错Container is not running问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Docker中Redis执行Lua脚本的两种方案

    Docker中Redis执行Lua脚本的两种方案

    很多人会误以为Lua脚本需要像部署应用一样,安装依赖、启动服务——其实完全不用,本文就给大家介绍Docker 环境下 Redis Lua 脚本部署与执行,需要的朋友可以参考下
    2026-03-03
  • 使用Portainer部署Docker容器的项目实践

    使用Portainer部署Docker容器的项目实践

    这篇文章主要介绍了使用Portainer部署Docker容器的项目实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04

最新评论