docker 中部署mysql8

导读:本篇文章讲解 docker 中部署mysql8,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、拉取镜像

# 拉取最新 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;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15406.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!