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。

导出数据

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

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

相关文章

web学习

TCP/IP体系结构(IP和端口): IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。 访问网站时:域名会通过DNS(解析服务&#xff…

Vue通过指令 命令将打包好的dist静态文件上传到腾讯云存储桶 (保存原有存储目录结构)

1、在项目根目录创建uploadToCOS.js文件 (建议起简单的名字 方便以后上传输入命令方便) 2、uploadToCOS.js文件代码编写 const path require(path); const fs require(fs); const COS require(cos-nodejs-sdk-v5);// 配置腾讯云COS参数 const cos n…

工程师是怎样对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师,亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践,也看到了很多 Bad Cases,所以想把自己的一些心得体会写在这里,供工程师进行…

跨域冲突问题解决

1、问题分析 服务端和nginx代理 都做了跨域配置,导致请求头重复 headers 里面有两个重复的 Access-Control-Allow-Origin Access-Control-Allow-Methods Access-Control-Allow-Credentials 2、解决方法 在nginx去除服务端的跨域配置 proxy_hide_header Access-…

铁路关基保护新规:优先采购安全可信的网络产品和服务!

《征求意见稿》第十四条提到:运营者应当加强供应链安全保护,优先采购安全可信的网络产品和服务;采购网络产品和服务影响或者可能影响国家安全的,运营者应当预判网络产品和服务投入使用后可能带来的国家安全风险,按照国…

quarkus核心编程笔记

此篇只做总结,有大佬做的更详细 大佬quarkus笔记 依赖注入 在应用中,一个接口有多个实现是很常见的,那么依赖注入时,如果类型是接口,如何准确选择实现呢? 修饰符匹配Named注解属性匹配根据优先级选择写…

论文笔记--GloVe: Global Vectors for Word Representation

论文笔记--GloVe: Global Vectors for Word Representation 1. 文章简介2. 文章概括3 文章重点技术3.1 两种常用的单词向量训练方法3.2 GloVe3.3 模型的复杂度 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题:GloVe: Global Vectors for Word Representa…

自己实现MyBatis 底层机制--抽丝剥茧(上)

😀前言 本篇博文是学习过程中的笔记和对于MyBatis底层机制的分析思路,希望能够给您带来帮助😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到…

(树) 剑指 Offer 27. 二叉树的镜像 ——【Leetcode每日一题】

❓剑指 Offer 27. 二叉树的镜像 难度:简单 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4/ \2 7/ \ / \1 3 6 9镜像输出: 4/ \7 2/ \ / \9 6 3 1示例 1: 输…

28_计算机网络(Computer Networks)基础

本篇介绍计算机网络的基础知识。 文章目录 1. 计算机网络历史2. 以太网" (Ethernet)2.1 以太网" (Ethernet)的简单形式及概念2.2 指数退避解决冲突问题2.3 利用交换机减少同一载体中设备2.4 互联网(The Internet)2.5 路由(routing)2.6 数据包…

基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab代码)

目录 1 主要内容 峰谷电价优化 电动汽车充电负荷变化 2 部分代码 3 程序结果 1 主要内容 该程序基本复现《基于峰谷分时电价引导下的电动汽车充电负荷优化》,代码主要做的是基于NSGA-II的电动汽车充电负荷优化,首先,在研究电动汽车用户充…

重生之我要学C++第五天

这篇文章主要内容是构造函数的初始化列表以及运算符重载在顺序表中的简单应用,运算符重载实现自定义类型的流插入流提取。希望对大家有所帮助,点赞收藏评论,支持一下吧! 目录 构造函数进阶理解 1.内置类型成员在参数列表中的定义 …

【云原生】Docker容器命令监控+Prometheus监控平台

目录 1.常用命令监控 docker ps docker top docker stats 2.weave scope 1.下载 2.安装 3.访问查询即可 3.Prometheus监控平台 1.部署数据收集器cadvisor 2.部署Prometheus 3.部署可视化平台Gragana 4.进入后台控制台 1.常用命令监控 docker ps [rootlocalhost ~…

重新审视MHA与Transformer

本文将基于PyTorch源码重新审视MultiheadAttention与Transformer。事实上,早在一年前博主就已经分别介绍了两者:各种注意力机制的PyTorch实现、从零开始手写一个Transformer,但当时的实现大部分是基于d2l教程的,这次将基于PyTorch…

opencv顺时针,逆时针旋转视频并保存视频

原视频 代码 import cv2# 打开视频文件 video cv2.VideoCapture(inference/video/lianzhang.mp4)# 获取原视频的宽度和高度 width int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) height int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))# 创建视频编写器并设置输出视频参数 fourcc …

【C++】类和对象(下)

1、初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(month), _…

OSPF协议RIP协议+OSPF实验(eNSP)

本篇博客主要讲解单区域的ospf,多区域的仅作了解。 目录 一、OSPF路由协议概述 1.内部网关协议和外部网关协议 二、OSPF的应用环境 1.从以下几方面考虑OSPF的使用 2.OSPF的特点 三、OSPF重要基本概念 3.1,辨析邻居和邻接关系以及七种邻居状态 3…

【MySQL】索引与B+树

【MySQL】索引与B树 索引概念前导硬件软件方面 索引的理解单个page多个page引入B树B树的特征为什么B树做索引优于其他数据结构?聚簇索引与非聚簇索引辅助索引 索引的创建主键索引的创建和查看唯一键索引的创建和查看普通索引的创建和查看复合索引全文索引索引的其他…

js全端支持的深拷贝structuredClone

Jul 7, 2023 经过一年半的试用,structuredClone转正了,全端可以正式使用。 https://developer.mozilla.org/en-US/docs/Web/API/structuredClone

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装 基于目前官方master主支,最新文档版本3.2Release,更新应用开发环境安装文档。 一、安装IDE: 1.IDE安装的系统要求 2.IDE下载官网链接(IDE下载链接) …