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

环境搭建-Docker搭建MySQL

Docker搭建MySQL

  • 一、前言
  • 二、Docker安装MySQL5.7安装
  • 三、建立远程连接
  • 四、Docker安装MySQL8.0

一、前言

本文使用的Docker使用Windows搭建,Linux版本的搭建方式一样。
Windows系统搭建Docker

二、Docker安装MySQL5.7安装

拉取MySQL指定版本的镜像

docker pull mysql:5.7

运行容器,启动 MySQL 5.7 容器:

docker run -p 3306:3306 --name mysql  -v /mydata/mysql/log:/var/log/mysql  -v /mydata/mysql/data:/var/lib/mysql  -v  mydata/mysql/conf:/etc/mysql  --restart=always  -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7

参数说明:

docker run:这是 Docker 启动容器的命令。-p 3306:3306:这部分命令将主机的端口 3306 映射到容器内的 3306 端口。这样,您可以通过主机的 3306 端口来访问容器内运行的 MySQL 服务。--name mysql:通过此选项,您为容器指定了一个名称,即 mysql。这使得容器更容易识别和管理。-v /mydata/mysql/log:/var/log/mysql:这是一个数据卷挂载操作,将主机上的 /mydata/mysql/log 目录挂载到容器内的 /var/log/mysql 目录。这样,MySQL 日志文件将在主机上存储,以供查看。-v /mydata/mysql/data:/var/lib/mysql:同样,这是另一个数据卷挂载操作,将主机上的 /mydata/mysql/data 目录挂载到容器内的 /var/lib/mysql 目录。这用于将 MySQL 数据文件保存在主机上,以便数据持久化。-v /mydata/mysql/conf:/etc/mysql:此挂载操作将主机上的 /mydata/mysql/conf 目录挂载到容器内的 /etc/mysql 目录。这样,您可以提供自定义的 MySQL 配置文件。--restart=always:这个选项指示 Docker 在容器退出时自动重新启动容器。这对于确保 MySQL 服务一直可用非常有用。-e MYSQL_ROOT_PASSWORD=123456:这个选项设置 MySQL 根用户的密码。在示例中,密码被设置为 123456-d:这个选项使容器在后台运行,以允许您继续在终端中执行其他命令。mysql:5.7:这是要运行的 Docker 镜像的名称和标签。在此示例中,使用 MySQL 5.7 镜像。

PS:

注意:实现配置挂载时,本地配置目录如果是空目录,那么挂载的时候,mysql容器内的配置目录也会为空(因为挂载了,会同步,同步会将容器内的配置目录也为空),这个时候,容器就无法成功运行。
解决这个问题,我们只要保证本地配置目录不为空就行了。解决思路有2个 :1:启动一个已有容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到本地。利用 docker cp命令完成;
docker cp mysql5.7-server:/etc/mysql/my.cnf E:/mysql/conf/my.cnf2.手动在本地新建一个my.cnf配置文件,将容器内配置文件 /etc/mysql/my.cnf内容复制到本地的配置文件中;

my.cnf:

[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
init_connect="SET collation_connection = utf8mb4_unicode_ci"
init_connect="SET NAMES utf8mb4"
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
default_time_zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1

三、建立远程连接

先进入容器

docker exec -it mysql bash

执行MySQL命令, 输入root密码, 连接MySQL

mysql -uroot -p123456

输入密码后, 执行下面命令创建新用户 (用户名: test , 密码: test123)

GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'test123' WITH GRANT OPTION;

四、Docker安装MySQL8.0

拉取MySQL镜像

docker pull mysql:8.0.21

运行MySQL容器

docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:8.0.21 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

5.7和8.0版本的主要不同是挂载数据卷配置路径不同。

相关文章:

  • webrtc 音频设备操作之opensl与jni
  • [K8S] K8S资源控制器Controller Manager(4)
  • zabbix添加钉钉告警机器人使用bash和python两种脚本
  • 操作系统概念(黑皮书)阅读笔记
  • 集成千兆网口(Gigabit Ethernet Port)的作用主要是提供高速的有线网络连接,其工作原理涉及以下几个关键点:
  • K8S 部署peometheus + grafana 监控
  • 【linux】Shell脚本三剑客之sed命令的详细用法攻略
  • 【MATLAB APP】建立独立桌面APP
  • 相反多位数
  • Python 教程(三):字符串特性大全
  • ATF-541M4全解析(一)
  • 展馆导览系统架构解析,从需求分析到上线运维
  • json数据格式 继续学习
  • web学习笔记(八十三)git
  • C#基础——类、构造函数和静态成员
  • Computed property XXX was assigned to but it has no setter
  • eclipse(luna)创建web工程
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mac修复ab及siege安装
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 翻译--Thinking in React
  • 工作中总结前端开发流程--vue项目
  • 解析 Webpack中import、require、按需加载的执行过程
  • 马上搞懂 GeoJSON
  • 用Canvas画一棵二叉树
  • Hibernate主键生成策略及选择
  • 仓管云——企业云erp功能有哪些?
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #WEB前端(HTML属性)
  • #图像处理
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $L^p$ 调和函数恒为零
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)二分查找 超详细
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (六)Flink 窗口计算
  • (三)c52学习之旅-点亮LED灯
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)基于IDEA的JAVA基础1
  • (译)2019年前端性能优化清单 — 下篇
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net 6.0 处理跨域的方式
  • .net 中viewstate的原理和使用
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET6实现破解Modbus poll点表配置文件
  • .NetCore发布到IIS
  • .NET企业级应用架构设计系列之开场白
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .Net中ListT 泛型转成DataTable、DataSet
  • /etc/shadow字段详解
  • @AliasFor 使用