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
文章目录
关闭