docker安装部署mysql8.0

快速部署:

mkdir -p /data/mysql8.0/config/conf.d
mkdir -p /data/mysql8.0/{data,logs,data_backup}
#启用MySQL8.0实例:
docker run --name mysql \
--restart=always \
-v /data/mysql8.0/config/conf.d:/etc/mysql/conf.d \
-v /data/mysql8.0/data:/var/lib/mysql \
-v /data/mysql8.0/data_backup:/var/lib/mysql-files \
-v /data/mysql8.0/logs:/var/log \
-v /etc/localtime:/etc/localtime \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=redrcd@123 \
-d mysql:8.0.29 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
#开启root远程连接
docker exec -it mysql bash
mysql -uroot -pxxxxxx
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
flush privileges;

部署详解:

创建MySQL映射文件夹

mkdir -p /data/mysql8.0/config/conf.d
mkdir -p /data/mysql8.0/{data,logs,data_backup}

创建后文件夹结构如下:

/data
└── mysql8.0 
     ├── config
     ├── data
     ├── data_backup
     └── logs
注意:

MySQL8.0启动后会自动初始化数据存放目录。MySQL5.7升级到MySQL8.0时,请先在MySQL5.7导出全部数据后,在启用MySQL8.0后 再导入MySQL5.7的数据。

 docker  MySQL8.0启动命令:

docker run --name mysql  \
    --restart=always \
    -v /data/mysql8.0/config/conf.d:/etc/mysql/conf.d \
    -v /data/mysql8.0/data:/var/lib/mysql \
    -v /data/mysql8.0/data_backup:/var/lib/mysql-files \
    -v /data/mysql8.0/logs:/var/log \
    -v /etc/localtime:/etc/localtime \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=redrcd@123  \
    -d  mysql:8.0.29 \
    --character-set-server=utf8mb4  \
    --collation-server=utf8mb4_unicode_ci

命令相关说明:

定义使用镜像拉取地址:9.8.8.11:8281/mysql:5.7.36

docker run --name mysql \ 定义容器名称为MySQL
    --restart=always \ 定义容器开机自动启动
    -v /data/mysql8.0/config/conf.d:/etc/mysql/conf.d \ 定义MySQL配置文件存储挂载目录 /data/mysql/config 
    -v /data/mysql8.0/data:/var/lib/mysql \ 定义MySQL数据存储挂载目录/data/mysql/data 
    -v /data/mysql8.0/data_backup:/var/lib/mysql-files \ 定义MySQL数据导出存储挂载目录/data/mysql/data_backup 
    -v /data/mysql8.0/logs:/var/log \ 定义MySQL日志存储挂载目录/data/mysql/data_backup 
    -v /etc/localtime:/etc/localtime \ 定义时间使用系统时间 
    -p 3306:3306 \ 定义服务监听使用端口 
    -e MYSQL_ROOT_PASSWORD=redrcd@123 \ 定义MySQL数据库的root密码 
    -d 9.8.8.11:8281/mysql:8.0.29 \ 定义拉去的MySQL数据库版本 
    --character-set-server=utf8mb4 \ 定义MySQL数据库默认字符集utf8mb4 
    --collation-server=utf8mb4_unicode_ci 定义MySQL数据库默认排序规则 utf8mb4_unicode_ci

开启远程连接

由于mysql8.0默认的密码加密方式是 caching_sha2_password,而目前大多数人使用的navicat版本需要升级到15或者16版本,其他navicat版本是不支持的

解决办法:

1.进入mysql容器
docker exec -it mysql bash
2. 使用root账号登录MySQL
mysql -uroot -pxxxxxx
3.使用mysql数据库
use mysql;
查看当前用户
select host,user from user;
4. 修改User表,将root用户更改为可以远程连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
5.权限刷新重载;
flush privileges; 

MySQL数据导入导出:

数据导入导出的目录:-v /data/mysql8.0/data_backup:/var/lib/mysql-files

-v /data/mysql8.0/data_backup:/var/lib/mysql-files

创建数据库转储(数据库导出)命令:

$ docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /data/mysql8.0/data_backup/all-databases.sql

从转储文件恢复数据(数据库导入)命令:

$ docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /data/mysql8.0/data_backup/all-databases.sql

官方参考文档:
https://hub.docker.com/_/mysql?tab=description&page=1&name=8

版权声明:
作者:WaterBear
链接:https://l-t.top/2261.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录