docker 中部署mysql8

一、拉取镜像

# 拉取最新 mysql 镜像
docker pull mysql

# 查看镜像
docker images

二、启动一个测试容器

目的:确定配置文件和数据文件的位置,复制文件到宿主机指定的位置,用于挂载文件,方便后期修改。

# 启动测试容器
docker run \
-p 3308:3306 \
--name mysql2 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql

三、创建文件夹,复制配置文件

# 创建文件夹
mkdir /home/docker/mysql/conf

# 复制文件到宿主机上
docker cp mysql2:/etc/mysql/my.cnf /home/docker/mysql/conf
docker cp mysql2:/etc/mysql/my.cnf.fallback /home/docker/mysql/conf
docker cp mysql2:/etc/mysql/conf.d /home/docker/mysql/conf

# 删除测试容器
docker rm -f 容器id

四、启动mysql并挂载数据

注意:必须要在/home/docker/mysql中要有对应的文件,就是上面这一步不可以少

docker run \
-p 3308:3306 \
--name mysql8 \
-v /etc/localtime:/etc/localtime \
-v /home/docker/mysql/data:/var/lib/mysql \
-v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql

五、异常情况

  • 客户端不能连接
    在这里插入图片描述

1.使用命令进入到docker中的mysql

docker exec -it mysql8 bash

2.修改密码规则

# 连接mysq
mysql -uroot -proot
# 修改密码
use mysql;
update user set host='%' where user='root';
alter user 'root'@'%' IDENTIFIED BY 'root';
# 刷新权限 
flush privileges;
# 修改密码规则
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
# 更新一下用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; 
# 刷新权限 
FLUSH PRIVILEGES; 

  • 忘记密码

1.在宿主机/home/docker/mysql/conf/my.cnf目录下修改:

[mysqld]
skip-grant-tables

2.重启mysql容器

docker restart mysql8

3.登陆mysql,不用输入密码

mysql -uroot -p

4.设置root密码为空

use mysql;
select user,authentication_string,host from user;

update user set authentication_string='' where user='root';

flush privileges;

5.退出mysql,把第一步的skip-grant-tables注释。再重启mysql

6.用root登陆,不用输入密码,更新密码

# 修改密码
use mysql;
update user set host='%' where user='root';
alter user 'root'@'%' IDENTIFIED BY 'root';
# 更新配置
flush privileges;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值