个人名片
在这里插入图片描述
🎓作者简介: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# 安装 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 远程连接
  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.7container_name: mysql57environment:MYSQL_ROOT_PASSWORD: yourpasswordMYSQL_USER: remote_userMYSQL_PASSWORD: StrongPass123!ports:- "3306:3306"volumes:- /data/mysql:/var/lib/mysqlrestart: unless-stoppedcommand:--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_ci--bind-address=0.0.0.0

使用方式:

docker-compose up -d

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93056.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93056.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93056.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己动手造个球平衡机器人

你是否曾对那些能够精妙地保持平衡的机器设备感到好奇? 从无人机到独轮平衡车,背后都蕴藏着复杂的控制系统。 今天,我们来介绍一个充满挑战与乐趣的项目——制作一个球平衡机器人。这不仅是一个酷炫的摆件,更是一次深入学习机器…

21.Linux HTTPS服务

Linux : HTTPS服务协议传输方式端口安全性HTTP明文传输80无加密,可被窃听HTTPS加密传输443HTTP SSL/TLS 数据加密(防窃听)身份认证(防伪装)完整性校验(防篡改)OpenSSL 证书操作核心命令命令选项…

SqlSugar 跨方法 操作临时表

.net项目中时长会有用到临时表的操作结果如下所示但是在SqlSugar中可能因为会话问题导致临时表访问受限 搜索到的方式var conn (SqlConnection)sugarClient.Ado.Connection;if (conn.State ! System.Data.ConnectionState.Open) {conn.Open();}using (var cmd new SqlCommand…

怎么用飞算javaAI实现视频逐帧截图并保存

相信很多朋友都遇到过这样的需求:想从视频中截取特定帧作为素材,却苦于没有简单易用的工具,要么操作复杂难以精准定位,要么导出的图片质量不佳。市面上的视频处理软件要么功能冗余,要么需要付费才能使用逐帧截取功能&a…

【2】Transformers快速入门:统计语言模型是啥?

一句话看懂统计语言模型核心任务:教电脑判断一句话 “像不像人话” (比如“我爱吃苹果”✅ vs “苹果吃爱我”❌)1. 早期:死磕语法规则 → 失败! 科学家思路(1970年前): 像语文老师一…

[激光原理与应用-230]:物理学主要分支、研究对象、衍生技术及职业方向解析

物理学作为自然科学的核心学科,其分支体系覆盖从微观粒子到宏观宇宙的广阔领域,并通过交叉融合衍生出众多前沿技术。以下从经典与现代物理学分支、交叉学科、技术转化及职业方向四个维度展开分析:一、经典物理学分支:宏观世界的基…

北京JAVA基础面试30天打卡08

RocketMQ、RabbitMQ与Kafka对比及常见问题解决方案 一、概述 消息队列(Message Queue, MQ)是企业IT系统内部通信的核心手段,用于提升性能、实现系统解耦和流量削峰。它具有低耦合、可靠投递、广播、流量控制、最终一致性等功能,是…

【CSS 变量】让你的 CSS “活”起来:深入理解 CSS 自定义属性与主题切换

【CSS 变量】让你的 CSS “活”起来:深入理解 CSS 自定义属性与主题切换 所属专栏: 《前端小技巧集合:让你的代码更优雅高效》 上一篇: 【CSS 视觉】无需JS,纯 CSS 实现酷炫视觉效果(clip-path, filter, b…

RAG初步实战:从 PDF 到问答:我的第一个轻量级 RAG 系统(附详细项目代码内容与说明)

RAG初步实战:从 PDF 到问答:我的第一个轻量级 RAG 系统 项目背景与目标 在大模型逐渐普及的今天,Retrieval-Augmented Generation(RAG,检索增强生成)作为连接“知识库”和“大语言模型”的核心范式&#…

自主泊车算法

看我的git 在 open space 空间下规划出⼀条⾃⻋到停⻋位的⽆碰撞轨迹 满⾜平滑约束 可跟踪 考虑动态障碍物约束 在路径不可⽤的情况下 具备重规划能⼒ 重规划时能够做到⽆缝切换 即从原路径⽆缝切换到重规划路径 ⽆明显体感 规划频率 10HZ

USB 2.0 学习(2)- 连接

上回说到 usb的信号 k 状态和 j 状态,补充一下 usb的一些电气小知识。 1.USB设备有四根线 电源线VBus、 D、 D-、 地线GND 2.USB主机端的 D 和 D-各有1个15k下拉电阻,这是为了准确检测 D还是D-线上电平的变化 因为USB总线检测USB设备是低速还是全速设备…

解锁 Appium Inspector:移动端 UI 自动化定位的利器

​ 在移动端 UI 自动化测试中,元素定位是绕不开的核心环节。无论是 Android 还是 iOS 应用,能否精准、高效地定位到界面元素,直接决定了自动化脚本的稳定性和可维护性。而 Appium Inspector 作为 Appium 生态中专门用于元素定位的工具&#…

机器学习概念1

了解机器学习1、什么是机器学习机器学习是一门通过编程让计算机从数据中进行学习的科学 通用定义:机器学习是一个研究领域让计算机无须进行明确编程就具备学习能力 工程化定义:一个计算机程序利用经验E来学习任务T,性能是P,如果针…

前端html学习笔记5:框架、字符实体与 HTML5 新增标签

本文为个人学习总结,如有谬误欢迎指正。前端知识众多,后续将继续记录其他知识点! 目录 前言 一、框架标签 作用: 语法: 属性: 二、字符实体 作用: 三、html5新增标签 语义化 状态 列…

Day05 店铺营业状态设置 Redis

Redis 入门 Redis 简介 Redis 是一个基于内存的 key-value 结构数据库。 基于内存存储,读写性能高 适合存储热点数据(热点商品,资讯,新闻) 企业应用广泛 redis 中文网:Redis中文网 Redis 下载与安装 R…

Linux驱动开发probe字符设备的完整创建流程

一、 设备号分配1.静态分配通过register_chrdev_region预先指定设备号(需要确保未被占用)2.动态分配通过alloc_chrdev_region由内核自动分配主设备号,一般都是动态分配以避免冲突。3316 xxxx_dev.major 0; 3317 3318 if (xx…

生产环境中Spring Cloud Sleuth与Zipkin分布式链路追踪实战经验分享

生产环境中Spring Cloud Sleuth与Zipkin分布式链路追踪实战经验分享 在复杂的微服务架构中,服务调用链路繁杂,单点故障或性能瓶颈往往难以定位。本文结合真实生产环境案例,分享如何基于Spring Cloud Sleuth与Zipkin构建高可用、低开销的分布…

基于Python的《红楼梦》文本分析与机器学习应用

本文将详细介绍如何使用Python和机器学习技术对《红楼梦》进行深入的文本分析和处理,包括文本分卷、分词、停用词处理、TF-IDF特征提取以及文本可视化等关键技术。一、项目概述本项目的目标是对中国古典文学名著《红楼梦》进行全面的自动化处理和分析,主…

Bevy渲染引擎核心技术深度解析:架构、体积雾与Meshlet渲染

本文将深入探讨Bevy游戏引擎的渲染架构,重点分析其体积雾实现原理、Meshlet渲染技术以及基于物理的渲染(PBR)系统。内容严格基于技术实现细节,覆盖从底层渲染管线到高级特效的全套解决方案。一、Bevy渲染架构深度解析1.1 核心架构…

CASS11计算斜面面积

1.生成三角网2.工程应用--计算表面积--根据三角网