当前位置: 首页 > article >正文

Docker 部署 MySQL 8 详细图文教程

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template
🌺 仓库主页: GitCode︱ Gitee ︱ Github
💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正!

目录

  • 1. 环境准备
  • 2. 创建宿主机挂载目录
  • 3. 准备 MySQL 配置文件
  • 4. 拉取 MySQL 8 Docker 镜像
  • 5. 启动 MySQL 容器
  • 6. 查看容器运行状态
  • 7. 配置 MySQL 远程连接权限
  • 8. 备份和恢复

1. 环境准备

首先,确保你的系统已安装 Docker。如果尚未安装 Docker,请参考相关文档进行安装:

  • Linux (CentOS 9) 安装 Docker
  • Linux (CentOS 8) 安装 Docker

2. 创建宿主机挂载目录

为了方便管理 MySQL 的配置文件、数据和日志,需要在宿主机上创建相应的挂载目录:

mkdir -p /mnt/mysql/{conf,data,logs}
路径用途
/mnt/mysql/conf存放自定义的 MySQL 配置文件 my.cnf
/mnt/mysql/data用于持久化存储 MySQL 数据文件
/mnt/mysql/logs存储 MySQL 的日志文件

设置挂载目录权限:

为确保容器能够正常访问和写入这些目录,需要调整宿主机目录的权限:

sudo chown -R 999:999 /mnt/mysql/data
sudo chown -R 999:999 /mnt/mysql/logs
  • 999:999 是 MySQL 容器内的 mysql 用户和组的 UID 和 GID。通过将权限设置为 999:999,确保容器能够正确地读写数据和日志文件。

3. 准备 MySQL 配置文件

/mnt/mysql/conf 目录下创建 MySQL 的配置文件。可以从官方 MySQL 镜像中获取默认配置文件并进行定制化设置。以下是一个基础的 my.cnf 配置文件示例:

首先,进入 /mnt/mysql/conf 目录并创建配置文件:

vi /mnt/mysql/conf/my.cnf

然后,添加以下内容到 my.cnf 配置文件中:

[mysqld]
# MySQL 数据存储路径
datadir=/var/lib/mysql# MySQL 错误日志路径
log-error=/var/log/mysql/error.log# 启用远程连接
bind-address=0.0.0.0# 设置字符集为 utf8mb4
character-set-server=utf8mb4# 默认排序规则为 utf8mb4_0900_ai_ci,若需兼容 MySQL 5.7 可使用 utf8mb4_unicode_ci
collation-server=utf8mb4_0900_ai_ci

4. 拉取 MySQL 8 Docker 镜像

在宿主机上执行以下命令来拉取最新版本的 MySQL 8 Docker 镜像:

docker pull mysql:8

在这里插入图片描述

5. 启动 MySQL 容器

通过 Docker 启动 MySQL 8 容器,并将宿主机的 /mnt/mysql 目录挂载到容器的相应路径。执行以下命令:

docker run -d \--name mysql8 \-e MYSQL_ROOT_PASSWORD=Youlai@2025 \-p 3306:3306 \-v /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf \-v /mnt/mysql/data:/var/lib/mysql \-v /mnt/mysql/logs:/var/log/mysql \mysql:8
参数说明
-d后台运行容器
--name mysql8给容器命名为 mysql8
-e MYSQL_ROOT_PASSWORD=rootpassword设置 root 用户密码为 yourpassword
-p 3306:3306映射宿主机的 3306 端口到容器的 3306 端口
-v /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf挂载宿主机的 MySQL 配置文件到容器内
-v /mnt/mysql/data:/var/lib/mysql挂载宿主机的 MySQL 数据目录到容器内
-v /mnt/mysql/logs:/var/log/mysql挂载宿主机的 MySQL 日志目录到容器内

在这里插入图片描述

6. 查看容器运行状态

使用以下命令检查 MySQL 容器是否成功启动:

docker ps

在这里插入图片描述

7. 配置 MySQL 远程连接权限

默认情况下,MySQL 只允许本地连接。如果你希望允许远程连接,可以通过修改 MySQL 的用户权限来实现。首先,进入 MySQL 容器并登录数据库:

docker exec -it mysql8 mysql -u root -p
# 输入容器创建时设置的 root 用户密码
# Enter password: yourpassword

接着,执行以下 SQL 语句,允许 root 用户从任何 IP 地址连接:

-- 允许 root 用户从任何 IP 地址连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

在这里插入图片描述

设置成功后,使用可视化客户端连接 MySQL 服务,并测试连接是否成功。请确保防火墙已开放 MySQL 的端口(默认端口 3306),以允许外部连接。
在这里插入图片描述

8. 备份和恢复

由于数据已经挂载到宿主机的 /mnt/mysql/data 目录中,你可以轻松地备份 MySQL 数据。以下是一个简单的备份命令示例:

docker exec mysql8 mysqldump -u root -pyourpassword --all-databases > /mnt/mysql/data/all_databases_backup.sql

恢复数据时,使用以下命令:

docker exec -i mysql8 mysql -u root -pyourpassword < /mnt/mysql/data/all_databases_backup.sql

在这里插入图片描述

相关文章:

Docker 部署 MySQL 8 详细图文教程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

【Python】模式匹配 match语句详解(仅在Python 3.10及以上版本中可用)

文章目录 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用)1. 基本语法2. 基本匹配操作2.1 匹配常量2.2 匹配变量2.3 匹配元组2.4 匹配列表2.5 匹配字典2.6 条件匹配 3. 应用场景 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用) Python 3.10 及以上版本中才引…...

vscode ESP32配置

一、自定义文件组件使用xxxx.c xxxx.h 1: 控制端工程目录创建组件文件夹 》 idf.py -C components create-component User_led 2: 定义组件如果引用指定外部依赖库,当前文件的cmakelists.txt 添加 REQUIRES driver idf_component_register(SRCS "uesr_led.c"INCLU…...

idea 2019.3常用插件

idea 2019.3常用插件 文档 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2019.3常用插件 插件名称插件版本说明1AceJump3.5.9AceJump允许您快速将插入符号导航到编辑器中可见的任何位置。只需按“ctrl&#xff1b;”&#xff0c;键入一个字符&#xff0c;然后在Ace Jump…...

全单模矩阵及其在分支定价算法中的应用

全单模矩阵及其在分支定价算法中的应用 目录 全单模矩阵的定义与特性全单模矩阵的判定方法全单模矩阵在优化中的核心价值分支定价算法与矩阵单模性的关系非全单模问题的挑战与系统解决方案总结与工程实践建议 1. 全单模矩阵的定义与特性 关键定义 单模矩阵&#xff08;Unimo…...

算法与数据结构(最小栈)

题目 思路 为了返回栈中的最小元素&#xff0c;我们需要额外维护一个辅助栈 min_stack&#xff0c;它的作用是记录当前栈中的最小值。 min_stack的作用&#xff1a; min_stack的栈顶元素始终是当前栈 st 中的最小值。 每当st中压入一个新元素时&#xff0c;如果这个元素小于等…...

KVM设置端口转发

20250217 - 概述 在ubuntu下进行虚拟机开发环境设置&#xff0c;希望外网也能够进行访问&#xff0c; 一开始希望通过桥接的方式来实现&#xff0c;但是发现有些不适配&#xff1b;所以最后使用了 NAT转发的形式。 一开始看的文章[1]&#xff0c;在设置路由转发之后&#xf…...

openCV中如何实现滤波

图像滤波用于去除噪声和图像平滑&#xff0c;OpenCV 提供了多种滤波器&#xff1a; 1.1. 均值滤波&#xff1a; import cv2# 读取图像 image cv2.imread("example.jpg")# 均值滤波 blurred_image cv2.blur(image, (5, 5)) # (5, 5) 是滤波核的大小 滤波核大小的…...

清影2.0(AI视频生成)技术浅析(二):自然语言处理

清影2.0(AI视频生成)中的自然语言处理(NLP)技术是其核心组件之一,负责将用户输入的自然语言文本转化为机器可以理解的语义表示,从而指导后续的视频生成过程。 一、基本原理 1. 目标 清影2.0的NLP技术旨在将用户输入的自然语言文本转化为机器可以理解的语义表示,从而指…...

五十天精通硬件设计第32天-S参数

系列文章传送门 50天精通硬件设计第一天-总体规划-CSDN博客 目录 1. S参数基础 2. S参数在信号完整性中的作用 3. 单端 vs. 差分S参数 4. S参数的关键特性 5. S参数的获取与使用 6. S参数分析中的常见问题 7. 实际案例:PCIe通道分析 8. 工具推荐 总结 信号完整性中…...

AI在网络安全中的应用:构建智能防护体系

AI在网络安全中的应用:构建智能防护体系 大家好,我是你们熟悉的人工智能与Python领域自媒体创作者Echo_Wish。今天我们来聊聊如何用AI技术提升网络安全水平。随着互联网的发展和数字化转型,网络安全威胁日益增多,传统的安全防护手段已经难以应对复杂多变的网络攻击。AI技术…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;InputOutputControl_0x2F服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x2F服务、输入输出控制、ISO 14229-1:2023、ECU测试 一、服务功能概…...

2025 BabitMF 第一期开源有奖活动正式开启 !

为了促进开源社区的交流与成长&#xff0c;字节跳动开源的多媒体处理框架 BabitMF &#xff08;GitHub - BabitMF/bmf: Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, e…...

Docker 安装和配置 Nginx 详细图文教程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

链表和list

链表和list ‍ ​ ​ ​ ​ ​ ​ ​ ​ ​ 算法题中的经典操作&#xff1a;用空间代替时间​ ​ ​ ​ 双链表头插顺序&#xff1a; 1.先修改新结点的左右指针 2.然后修改结点y的左指针 3.最后修改哨兵位的右指针 双链表在任意位置&#xff08;p&#xff09;之后插入…...

深度学习机器学习:常用激活函数(activation function)详解

目录 Sigmoid Function ReLU&#xff08;Rectified Linear Unit&#xff09; LeakyReLU&#xff08;Leaky Rectified Linear Unit&#xff09; ClippedReLU&#xff08;Clipped Rectified Linear Unit&#xff09; PRelu&#xff08;Parametric ReLU&#xff09; Tanh&am…...

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney&#xff08;艺术感最强&#xff09; ▸ DALLE 3&#xff08;与ChatGPT深度联动&#xff09; ▸ Leonardo.ai&#xff08;精细化参数控制&#xff09; 核心策略 提示词架构&#xff1a; [主体描述][环境氛围][镜头语言][风格参数…...

【对比】Pandas 和 Polars 的区别

Pandas vs Polars 对比表 特性PandasPolars开发语言Python&#xff08;Cython 实现核心部分&#xff09;Rust&#xff08;高性能系统编程语言&#xff09;性能较慢&#xff0c;尤其在大数据集上&#xff08;内存占用高&#xff0c;计算效率低&#xff09;极快&#xff0c;利用…...

C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性

在实际项目中为方便了解视觉软件的使用性&#xff0c;可能需要添加一些小而稍微实用的功能:一个StipStatus控件上的Label按钮属性Text需要修改并保存&#xff0c;软件重启后能够自动加载修改后的属性名。 定义变量 public static string controlsText System.Windows.Forms.A…...

下载安装运行测试开源vision-language-action(VLA)模型OpenVLA

1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码&#xff0c;执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…...

PyQt6/PySide6 的 SQL 数据库操作(QtSql)

一、核心组件架构 1.1 QtSql模块构成 QSqlDatabase&#xff1a;数据库连接管理&#xff08;支持连接池&#xff09;QSqlQuery&#xff1a;SQL语句执行与结果遍历QSqlTableModel&#xff1a;可编辑的表格数据模型QSqlQueryModel&#xff1a;只读查询结果模型QSqlRelationalTab…...

【Zookeeper如何实现分布式锁?】

Zookeeper如何实现分布式锁? 一、ZooKeeper分布式锁的实现原理二、ZooKeeper分布式锁的实现流程三、示例代码四、总结一、ZooKeeper分布式锁的实现原理 ZooKeeper是一个开源的分布式协调服务,它提供了一个分布式文件系统的接口,可以用来存储和管理分布式系统的配置信息。 …...

【MySQL】环境变量配置

环境变量英文名SystemRoot&#xff0c;直译为“系统总&#xff08;根&#xff09;目录"&#xff0c;主要指明操作系统的重要目录在哪里。那么配置MySQL的环境变量&#xff0c;就是在程序运行时&#xff0c;告诉操作系统你的MySQL目录位置。 复制MySQL安装目录&#xff1a;…...

为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2

本文要点 要点 前面的所有讨论都是为了给出我的设计项目&#xff08;为使用AI聊天工具的聊天者 开挂一个知识系统&#xff09; 的祖传代码 的完整设计&#xff0c;其中 的“槽”&#xff08;占位符变量&#xff09;的 库元&#xff08;宝性和自性creator -本俱 替换内容标准模…...

什么是 近端策略优化算法PPO

什么是 近端策略优化算法PPO 近端策略优化算法(Proximal Policy Optimization,PPO)是OpenAI公司于2017年开发的一系列无模型强化学习算法,用于优化策略网络以最大化累计奖励。以下是具体介绍及示例: 算法原理 策略梯度:PPO基于策略梯度算法,通过估计策略网络的梯度来更…...

【Java】实现后端请求接口

【Java】实现后端请求接口 【一】使用 HttpURLConnection 实现四种请求方式的示例【1】Get请求【2】POST请求【3】PUT请求【4】DELETE 请求【5】汇总工具类&#xff0c;通过传参实现4种请求 【二】HttpClient 实现四种请求方式的示例【1】GET请求【2】POST 请求【3】PUT 请求【…...

假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?

前言&#xff1a;本篇文章解释了接口学习过程中的2个常见问题&#xff0c;一个是“为什么是类在使用接口”&#xff0c;另一个一个是“编程接口与物理接口的差异源于所处的抽象层次和交互模式的不同”&#xff0c;旨在揭示编程接口的本质。 Part1.是类在使用接口 当学习接口时…...

Node.js 中的 Event 模块详解

Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式&#xff0c;允许对象&#xff08;称为“事件发射器”&#xff09;发布事件&#xff0c;而其他对象&#xff08;称为“事件监听器”&#xff09;可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用&#xff0c;增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤&#xff0c;教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...

Docker 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…...