Docker安装 Mysql 8.x 版本

news2024/9/27 12:07:18

文章目录

  • 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=3308

default_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=1000

init-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.coloradmin.cn/o/809248.html

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

相关文章

SolidWorks(1)

打开solidworks,选择零件选择草图、绘制草图选择上视基准面 最后完成草图 选择拉伸切除 最终成品 鼠标按住中键,进行旋转

优思学院:六西格玛的10大概念和特点

六西格玛是一种管理方法,致力于提高组织的运营效率和质量水平。它起源于20世纪80年代的美国,随后在全球范围内得到广泛应用。今天我们将探讨六西格玛的十大概念和特点,帮助您了解如何将这一管理方法应用于您的业务中。 1. 什么是六西格玛&am…

【前端知识】React 基础巩固(三十七)——自定义connect高阶组件

React 基础巩固(三十七)——自定义connect高阶组件 一、手撸一个自定义connect高阶组件 import { PureComponent } from "react"; import store from "../store";/*** connect的参数:* 参数一: 函数* 参数二: 函数* 返…

TiProxy 尝鲜

说明 最近发现 tidb 有个 GitHub - pingcap/TiProxy 仓库,抱着好奇的心态想试试这个组件的使用效果。于是按照文档的介绍在本地环境使用tiup做了一些实验,现在将实验过程和实验结果分享给大家。 TiProxy介绍 官方README介绍的已经很清楚了,…

QT 调用USB免驱摄像头

文章目录 前言一、界面布局二、QImageEncoderSettings类三、图像的显示总结 前言 本篇文章来讲解一下如何使用QT调用摄像头,这里我使用的是USB免驱动摄像头,使用不需要按照驱动QT就可以调用到摄像头。 一、界面布局 这里使用QT设计师进行界面的布局&a…

数据结构:树的存储结构

学习树之前,我们已经了解了二叉树的顺序存储和链式存储,哪么我们如何来存储普通型的树结构的数据?如下图1: 如图1所示,这是一颗普通的树,我们要如何来存储呢?通常,存储这种树结构的数…

vmware磁盘组使用率100%处理

今天在外办事时,有客户发过来一个截图,问vmware 磁盘组空间使用率100%咋办?如下图: 直接回复: 1、首先删除iso文件等 2、若不存在ISO文件等,找个最不重要的虚拟机直接删除,删除后稍等就会释放…

数据分析-关于指标和指标体系

一、电商指标体系 二、指标体系的作用 三、统计学中基本的分析手段

记一次解决FTPS上传的文件为空的问题

最近公司的vsftpd文件服务由之前的FTP传输改成了FTPS的,虽然代码做了相应的调整,但是始终有个问题,就是在服务器上文件创建成功了,名称也是正确的,可是一看大小确是0,于是查看日志 用项目上传的始终是失败&…

mybatis-config.xml-配置文件详解

文章目录 mybatis-config.xml-配置文件详解说明文档地址:配置文件属性解析properties 属性应用实例 settings 全局参数定义应用实例 typeAliases 别名处理器举例说明 typeHandlers 类型处理器environments 环境environment 属性应用实例 mappers配置 mybatis-config.xml-配置文…

vue除了子组件抛出的额外参数,父组件如何传递额外参数

以下为一个简单的demo,只为记录一下 很多时候如果我们多个地方使用同一函数时,往往就需要进行判断了,但是组件库返回的函数携带的参数没办法让我们做多余的判断 这时就需要传递多余的参数了 方法一 使用箭头函数 <template><div><el-switchv-model"value&…

2023年中秋节国庆节是几月几号开始休假国庆中秋双节放假几天?

2023年中秋节国庆节是几月几号开始休假国庆中秋双节放假几天&#xff1f; 2023年中秋节与国庆节双节相遇一起放假长大8天; 2023年中秋节与国庆节放假时间是从2023年9月29日开始至10月6日共计8天&#xff0c;10月7日、10月8日补班&#xff1b; 2023年中秋节怎么购买月饼省钱又…

Jenkins配置自动化构建的几个问题

在创建构建任务时&#xff0c;填写git远程仓库地址时&#xff0c;出现以下报错 解决此报错先排查一下linux机器上的git版本 git --version 如果git 版本过低&#xff0c;可能会导致拉取失败&#xff0c;此时需要下载更高的git版本。 参考 Git安装 第二个解决办法报错信息中…

Ansible的脚本 --- playbook 剧本

文章目录 一、playbook剧本的组成创建剧本运行playbook二、定义、引用变量三、指定远程主机sudo切换用户四、when条件判断五、迭代Templates 模块tags 模块 一、playbook剧本的组成 playbooks 本身由以下各部分组成 &#xff08;1&#xff09;Tasks&#xff1a;任务&#xff0…

SpringCloudAlibaba之整合openFeign

一.openFeign的入门使用&#xff08;4步&#xff09; 1.引入openFeign的依赖包&#xff0c;记得父项目中要加上SpringCloud依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactI…

VSCode新手快速下载、安装、使用

目录 下载 安装 1、许可协议 2、安装位置 3、开始菜单文件夹 4、附加任务 5、确认安装 6、完成 使用 1、汉化&#xff08;设置中文界面&#xff09; 2、设置 下载 进入VSCode官方页面&#xff0c;选择自己系统对应的下载链接VSCode默认提供的User Installer版本。但…

【解决】el-tree报Cannot read property ‘getCheckedKeys‘ of undefined

如果你报错 Cannot read property getCheckedKeys of undefined 或者 Cannot read property getCheckedNodes of undefined 只要在你的在<el-tree>上加个这个&#xff0c;就可以了 ref"tree"

某圆形变电站三维建模模型-glb格式-三维漫游-三维可视化-三维模拟巡检

资源介绍 某个圆形变电站的三维建模模型&#xff0c;glb格式&#xff0c;适用于three.js开发测试&#xff0c;可用来做一些三维室内漫游测试、室内导航测试和三维模拟巡检测试 资源下载地址

联想拯救者笔记本切换独显直连游戏体验翻倍、火力全开“嗨”起来

最早的游戏本是由独显负责图形运算&#xff0c;然后直接向屏幕输出所有画面的。但独显负责所有工作&#xff0c;无时无刻都在耗电&#xff1b;撇开游戏模式下高负载的功耗不谈&#xff0c;即便在省电模式下功耗也比核显高得多。 英伟达发布的Optimus混合输出技术&#xff0c;在…

马哈鱼 v.sqlflow.cn 上线试用

马哈鱼数据血缘工具从2023年8月开始开通国内云版本的服务&#xff0c;相比国外版本&#xff0c;访问速度有很大的提升&#xff0c;访问域名为https://v.sqlflow.cn 2023年8月和9月注册的用户可免费获得价值 3000 元的一年高级帐户&#xff0c;可以使用马哈鱼数据血缘工具全部付…