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

Docker安装 Mysql 8.x 版本

文章目录

  • Docker安装 Mysql 8.0.22
  • Mysql 创建账号并授权
  • Mysql 数据迁移
        • 同版本数据迁移
        • 跨版本数据迁移

Mysql 5.x 版本与 Mysql 8.x版本是两个大版本,这里演示安装Mysql 8.x版本

Docker安装 Mysql 8.0.22


# 下载mysql
$ docker pull mysql              默认安装最新版本的mysql(注意可能不是稳定版本)$ docker pull mysql:版本号        安装指定版本的mysql                    ## 此处以安装mysql8.0.22为例,命令为:
$ docker pull mysql:8.0.22# 创建mysql日志目录、数据目录、配置目录
mkdir -p /mydata/mysql/log /mydata/mysql/data  /mydata/mysql/conf# 增加mysql配置(docker外部挂载的mysql配置文件)
$ vi /mydata/mysql/conf/my.cnf       # 添加配置文件 my.inf ,每个版本大版本的mysql,配置可能有区别,下面是示例。
# MYSQL常用配置
[client]
default-character-set=utf8[mysql]
default-character-set=utf8[mysqld]
user=mysql
#默认3306端口,这里改了默认端口
port=3308default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000init-connect='SET collation_connection = utf8_unicode_ci'
init-connect='SET NAMES utf8'
default-time_zone = '+8:00'
character-set-server=utf8
collation-server=utf8_unicode_ci
#collation-server=utf8_general_ci
skip-character-set-client-handshake
skip-name-resolve# 启动mysql容器,如果没有则自动下载 mysql:8.0.22 镜像 
$ docker run -p 3308:3308 --name mysql \
--privileged=true \
--restart=always \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.22# 参数解释
-p 3308:3308 --name mysql \				# 将容器内部3308端口映射到外部主机3308端口
--privileged=true \					   	# 在容器内启用特权模式,以便于执行一些特殊操作
--restart=always \						# 如果容器停止运行,自动重新启动容器。
-v /mydata/mysql/log:/var/log/mysql \	# 将宿主机的 /mydata/mysql/data 目录挂载到容器的 /var/lib/mysql 目录,用于存储 MySQL 数据。
-v /mydata/mysql/data:/var/lib/mysql \	# 将宿主机的 /mydata/mysql/conf 目录挂载到容器的 /etc/mysql 目录,用于存储 MySQL 配置文件。
-v /mydata/mysql/conf:/etc/mysql \		# 设置 MySQL 的 root 用户的密码为 “root”。你可以根据需要修改为其他密码。
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.22					# 使用名为 “mysql:8.0.22” 的 Docker 镜像来后台运行容器。# [可选]滚动查看容器日志
$ docker logs -f -t --tail=20 mysql# [可选]重启docker内部的mysql容器,使新增的配置生效。
$ docker restart mysql# [可选]设置Docker容器启动,自动启动mysql
$ sudo docker update mysql --restart=always# [可选]修改时区 (服务重启后失效。需要修改配置)
show variables like '%time_zone%';
set global time_zone='+8:00';
set time_zone = '+8:00'; 
flush privileges;

Mysql 创建账号并授权

MySql8有新的安全要求,不能像之前的版本那样一次性创建用户并授权需要先创建用户,再进行授权操作

方式一:通过 数据库工具 连接 root账号,创建 子账号

方式二:通过命令直接创建子账号并授权

可以任选其一

# 进入mysql 容器内部
$ docker exec -it mysql /bin/bash
# 本地无密码登录root 
$ mysql -u root --port=3308 -p
show databases; # 显示所有数据库
use mysql;    # 使用 mysql数据库
select host, user, authentication_string, plugin from user;   # 查询mysql账号# 方式一:通过 数据库工具 连接 root账号,创建 子账号
# 修改root账号可以远程连接
update user set host = '%' where user = 'root';
flush privileges;
# 通过 数据库工具 连接 root账号,创建 子账号,略
# 创建子账号后,修改root账号只能本地连接
update user set host = 'localhost' where user = 'root';
flush privileges;#方式二:通过ssh连接数据库,通过命令创建子账号
# 进入mysql 容器内部
```shell
# 进入mysql 容器内部
$ docker exec -it mysql /bin/bash
# 本地无密码登录root 
$ mysql -u root --port=3308 -p
show databases; # 显示所有数据库
use mysql;    # 使用 mysql数据库
select host, user, authentication_string, plugin from user;   # 查询mysql账号# 方式一:通过 数据库工具 连接 root账号,创建 子账号
# 修改root账号可以远程连接
update user set host = '%' where user = 'root';
flush privileges;
# 通过 数据库工具 连接 root账号,创建 子账号,【略】
# 创建子账号后,修改root账号只能本地连接
update user set host = 'localhost' where user = 'root';
flush privileges;#方式二:通过ssh连接数据库,通过命令创建子账号
# 进入mysql 容器内部
$ docker exec -it mysql /bin/bash
# 本地无密码登录root 
$ mysql -u root --port=3308 -p
show databases; # 显示所有数据库
use mysql;    # 使用 mysql数据库
select host, user, authentication_string, plugin from user;   # 查询mysql账号###### 示例1 :创建只读权限的账户,仅能连接"demo"数据库,#######
create user 'demo_only_read'@'%' identified by 'onlyRead@demo'; grant all privileges on demo.* to 'demo_only_read'@'%'   with grant option; 
# 修改密码加密方式(Mysql 8.x的加密方式与Mysql 5.x的加密方式有很大不同,Mysql8.x新的加密方式,部分数据库可视化工具不支持导致连接不上,这里将 Mysql 8.x的加密方式改为 Mysql 5.x的加密方式)
alter user 'demo_only_read'@'%' identified with mysql_native_password by 'onlyRead@demo';
# 刷新配置使新配置生效
flush privileges;###### 示例2 :创建 demo 完全权限,仅能操作"demo"数据库,不可操作其他数据库 的账号 ###### 
create user 'demo'@'%' identified by 'read_write@demo'; grant all privileges on demo.* to 'demo'@'%'   with grant option; alter user 'demo'@'%' identified with mysql_native_password by 'read_write@demo';flush privileges;# 登录 demo 账号验证
$ mysql -u demo --port=3308 -p 

Mysql 数据迁移

同版本数据迁移

重要:同版本之间可以直接拷贝 data数据文件夹。但跨版本直接拷贝可能会版本冲突,导致数据库数据不可见。

由于是低版本5.x 升级为 8.0.x 因此不能使用数据文件直接拷贝的方式

# 查找本机mysql 文件目录
$ find / -name mysql
# 或者登录msyql后,执行如下sql查看data数据目录:
$ show variables like 'datadir';
# 两个服务器之间传输文件  
$ scp  -r /var/lib/mysql/  root@IP:/home/xxx/

跨版本数据迁移

  1. 先利用数据库工具,如: DBeaver 先导出数据库表结构 DLL 的sql语句,然后执行;
  2. 将所有表数据通过 DBeaver 导出 。 (如果没有第一步,直接第二步,会丢失数据库索表备注,索引和约束等信息)
    • 选中要导出的表,右键—》导出数据
    • 选择,从A库拷贝到 B库,由于上一步已提前执行了DDL,这一步是导入每个表的表数据
    • [可选]如果你导出的数据很大,则需要调整DBeaver可支配的运行内存,尽量调大,否则会内存溢出而中断。找到DBeaver安装目录,打开dbeaver.ini文件,添加 JVM参数-Xms512m -Xmx3072m 。保存,重启DBeaver。

导出数据

相关文章:

Docker安装 Mysql 8.x 版本

文章目录 Docker安装 Mysql 8.0.22Mysql 创建账号并授权Mysql 数据迁移同版本数据迁移跨版本数据迁移 Mysql 5.x 版本与 Mysql 8.x版本是两个大版本,这里演示安装Mysql 8.x版本 Docker安装 Mysql 8.0.22 # 下载mysql $ docker pull mysql 默认安装最新…...

【数理知识】刚体 rigid body 及刚体的运动

文章目录 1 刚体2 刚体一般运动1 平移运动2 旋转运动 Ref 1 刚体 刚体是指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。绝对刚体实际上是不存在的,只是一种理想模型,因为任何物体在受力作用后&#…...

【UE5 多人联机教程】03-创建游戏

效果 步骤 打开“UMG_MainMenu”,增加创建房间按钮的点击事件 添加如下节点 其中,“FUNL Fast Create Widget”是插件自带的函数节点,内容如下: “创建会话”节点指游戏成功创建一个会话后,游戏的其他实例即可发现&am…...

【时间序列预测 】M4

【时间序列预测 】M4 论文题目:The M4 Competition: 100,000 time series and 61 forecasting methods 中文题目: 论文链接: 论文代码: 论文团队: 发表时间: DOI: 引用: 引用数: 摘要…...

SpringCloud微服务实战——搭建企业级开发框架(五十三):微信小程序授权登录增加多租户可配置界面

GitEgg框架集成weixin-java-miniapp工具包以实现微信小程序相关接口调用功能,weixin-java-miniapp底层支持多租户扩展。每个小程序都有唯一的appid,weixin-java-miniapp的多租户实现并不是以租户标识TenantId来区分的,而是在接口调用时&#…...

Stability AI推出Stable Diffusion XL 1.0,文本到图像模型

Stability AI宣布推出Stable Diffusion XL 1.0,这是一个文本到图像的模型,该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示,SDXL 1.0能生成更加鲜明准确的色彩,在对比度、光线和阴影方面做了增强,可生成…...

B076-项目实战--宠物上下架 展示 领养 收购订单

目录 上下架功能提供后台宠物列表实现 前台展示前台宠物列表和详情展示店铺展示 领养分析前台后端PetControllerPetServiceImpl 订单需求分析可能产生订单的模块订单模块额外功能 订单设计表设计流程设计 集成基础代码收购订单创建订单前端后端 上下架功能提供 后台宠物列表实…...

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置(UserDefaults)数据库存储什么是序列化和反序列化,…...

教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳实践@2023

1. 本篇适用范围与目的 1.1. 适用范围 严格使用 Vue3 TypeScript 的前端项目,包管理器默认使用 pnpm 构建工具使用 Vite4 使用原生 CesiumJS 依赖做应用开发 客户端渲染,因为我不太熟悉 Vue 的服务端渲染,有本篇的介绍后,熟悉…...

最优化方法

一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景:道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…...

Mongodb 多文档聚合操作处理方法二(Map-reduce 函数)

聚合 聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来: 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作,您可以使用: 聚合管道 单一目的聚合方法 Map-reduce 函…...

ant design vue j-modal 修改高度

问题描述 今天在项目中遇到关于j-modal组件修改弹窗大小问题,我尝试使用直接使用:height"300",没用效果,弹窗大小依然和没改之前一样,后来找到了这种方式可以去修改j-modal弹窗大小,下面来看下代码实现&…...

spring学习笔记七

一、自动装配 1.1、BookDao接口和实现类 public interface BookDao {void save(); } public class BookDaoImpl implements BookDao {public void save(){System.out.println("book dao save......");} } 1.2、BookService接口和实现类 public interface BookSer…...

hw技战法整理参考

目录 IP溯源反制 账户安全策略及预警 蜜罐部署联动方案...

uniapp 全局数据(globalData)的设置,获取,更改

globalData,这是一种简单的全局变量机制。这套机制在uni-app里也可以使用,并且全端通用 因为uniapp基本上都是将页面,或者页面中相同的部分,进行组件化,所以会存在父,子,(子&#xf…...

Profinet转EtherNet/IP网关连接AB PLC的应用案例

西门子S7-1500 PLC(profinet)与AB PLC以太网通讯(EtherNet/IP)。本文主要介绍捷米特JM-EIP-PN的Profinet转EtherNet/IP网关,连接西门子S7-1500 PLC与AB PLC 通讯的配置过程,供大家参考。 1, 新建工程&…...

Python组合模式介绍、使用方法

一、Python组合模式介绍 概念: 组合模式(Composite Pattern)是一种结构型设计模式,它通过将对象组合成树状结构来表示“整体/部分”层次结构,让客户端可以以相同的方式处理单个对象和组合对象。 功能: 统一对待组合对象和叶子对…...

生成模型和判别模型工作原理介绍

您解决的大多数机器学习和深度学习问题都是从生成模型和判别模型中概念化的。在机器学习中,人们可以清楚地区分两种建模类型: 将图像分类为狗或猫属于判别性建模生成逼真的狗或猫图像是一个生成建模问题神经网络被采用得越多,生成域和判别域就增长得越多。要理解基于这些模型…...

shardingsphere读写分离配置

注: 如果是升级之前的单库单表,要将之前的 数据库接池 druid-spring-boot-starter 注释掉,换成 druid,否则无法连接数据库。 原因: 因为数据连接池的starter(比如druid)可能会先加载并且其创…...

登录报错 “msg“:“Request method ‘GET‘ not supported“,“code“:500

1. 登录失败 2. 排查原因, 把 PostMapping请求注释掉, 或改成GetMapping请求就不会报错 3. 找到SecurityConfig.java , 新增 .antMatchers("/**/**").permitAll() //匹配允许所有路径 4. 登录成功...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...