广东手机网站建设,h5页面制作是什么,html做网站在手机上显示,如何利用互联网营销文章目录 Docker安装 Mysql 8.0.22Mysql 创建账号并授权Mysql 数据迁移同版本数据迁移跨版本数据迁移 Mysql 5.x 版本与 Mysql 8.x版本是两个大版本#xff0c;这里演示安装Mysql 8.x版本 Docker安装 Mysql 8.0.22 # 下载mysql
$ docker pull mysql 默认安装最新… 文章目录 Docker安装 Mysql 8.0.22Mysql 创建账号并授权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-setutf8[mysql]
default-character-setutf8[mysqld]
usermysql
#默认3306端口这里改了默认端口
port3308default_authentication_pluginmysql_native_password
secure_file_priv/var/lib/mysql
expire_logs_days7
sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections1000init-connectSET collation_connection utf8_unicode_ci
init-connectSET NAMES utf8
default-time_zone 8:00
character-set-serverutf8
collation-serverutf8_unicode_ci
#collation-serverutf8_general_ci
skip-character-set-client-handshake
skip-name-resolve# 启动mysql容器如果没有则自动下载 mysql:8.0.22 镜像
$ docker run -p 3308:3308 --name mysql \
--privilegedtrue \
--restartalways \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORDroot \
-d mysql:8.0.22# 参数解释
-p 3308:3308 --name mysql \ # 将容器内部3308端口映射到外部主机3308端口
--privilegedtrue \ # 在容器内启用特权模式以便于执行一些特殊操作
--restartalways \ # 如果容器停止运行自动重新启动容器。
-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_PASSWORDroot \
-d mysql:8.0.22 # 使用名为 “mysql:8.0.22” 的 Docker 镜像来后台运行容器。# [可选]滚动查看容器日志
$ docker logs -f -t --tail20 mysql# [可选]重启docker内部的mysql容器使新增的配置生效。
$ docker restart mysql# [可选]设置Docker容器启动自动启动mysql
$ sudo docker update mysql --restartalways# [可选]修改时区 (服务重启后失效。需要修改配置)
show variables like %time_zone%;
set global time_zone8:00;
set time_zone 8:00;
flush privileges;Mysql 创建账号并授权 MySql8有新的安全要求不能像之前的版本那样一次性创建用户并授权需要先创建用户再进行授权操作 方式一通过 数据库工具 连接 root账号创建 子账号 方式二通过命令直接创建子账号并授权 可以任选其一 # 进入mysql 容器内部
$ docker exec -it mysql /bin/bash
# 本地无密码登录root
$ mysql -u root --port3308 -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 --port3308 -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 --port3308 -p
show databases; # 显示所有数据库
use mysql; # 使用 mysql数据库
select host, user, authentication_string, plugin from user; # 查询mysql账号###### 示例1 :创建只读权限的账户,仅能连接demo数据库,#######
create user demo_only_read% identified by onlyReaddemo; 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 onlyReaddemo;
# 刷新配置使新配置生效
flush privileges;###### 示例2 :创建 demo 完全权限仅能操作demo数据库,不可操作其他数据库 的账号 ######
create user demo% identified by read_writedemo; grant all privileges on demo.* to demo% with grant option; alter user demo% identified with mysql_native_password by read_writedemo;flush privileges;# 登录 demo 账号验证
$ mysql -u demo --port3308 -p Mysql 数据迁移
同版本数据迁移 重要同版本之间可以直接拷贝 data数据文件夹。但跨版本直接拷贝可能会版本冲突导致数据库数据不可见。 由于是低版本5.x 升级为 8.0.x 因此不能使用数据文件直接拷贝的方式 # 查找本机mysql 文件目录
$ find / -name mysql
# 或者登录msyql后执行如下sql查看data数据目录
$ show variables like datadir;
# 两个服务器之间传输文件
$ scp -r /var/lib/mysql/ rootIP:/home/xxx/跨版本数据迁移 先利用数据库工具如 DBeaver 先导出数据库表结构 DLL 的sql语句然后执行将所有表数据通过 DBeaver 导出 。 (如果没有第一步直接第二步会丢失数据库索表备注索引和约束等信息) 选中要导出的表右键—》导出数据选择从A库拷贝到 B库由于上一步已提前执行了DDL这一步是导入每个表的表数据[可选]如果你导出的数据很大则需要调整DBeaver可支配的运行内存尽量调大否则会内存溢出而中断。找到DBeaver安装目录打开dbeaver.ini文件添加 JVM参数-Xms512m -Xmx3072m 。保存重启DBeaver。