史上最全Docker安装mysql8.0.32教程

该博客详细介绍了如何在Ubuntu20.04系统上通过Docker安装MySQL8.0.32,包括拉取镜像、查看镜像、创建挂载目录、启动容器并配置数据持久化。同时,还讲解了如何设置远程连接、解决登录错误问题以及配置MySQL的字符集。整个过程旨在确保即使删除容器,数据也能在宿主机上保留,并允许远程访问。
摘要由CSDN通过智能技术生成

说明:

操作系统:ubuntu20.04 

请安装mysql最新版本,8.0.30(含)之前的有漏洞需要打补丁

目标:安装mysql:8.0.32,使MySQL的数据文件落在宿主机上面,即使删除容器,数据依然在;

安装docker环境;默认安装完整

查看docker状态:systemctl status docker

目录

一、拉取镜像  

二、查看镜像

三、创建要挂载的文件夹

四、执行容器

五、配置远程连接

六、密码正确,登录错误

七、配置mysql的字符集


//指定版本       

docker pull mysql:8.0.32


// 拉取最新的mysql
docker pull mysql:latest

 查看docker仓库中mysql镜像

二、查看镜像

docker images

三、创建要挂载的文件夹

[root@~]# mkdir -p /opt/docker/mysql8/conf/
[root@~]# mkdir -p /opt/docker/mysql8/logs/
[root@~]# mkdir -p /opt/docker/mysql8/data/
# 拷贝一份配置文件,先随便启动一个镜像
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0.32

# 启动成功后,进入容器内部拷贝配置文件,到宿主主机
docker cp  mysql8:/etc/mysql /opt/docker/mysql8/conf

# 删除刚才的容器,重新创建容器
# 先停止容器
docker stop mysql8

# 再删除容器
docker rm mysql8

四、执行容器

启动mysql ,挂载配置文件,数据持久化到宿主主机

docker run  -itd  -p 3306:3306 --name mysql8 -e character-set-server=utf8mb4 --privileged=true  --restart unless-stopped  -v /opt/docker/mysql8/conf/mysql:/etc/mysql  -v /opt/docker/mysql8/logs:/logs  -v /opt/docker/mysql8/data:/var/lib/mysql -v /etc/localtime:/etc/localtime  -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0.32 --lower_case_table_names=1

命令解释:

-p 端口映射
–name 容器名字,自定义
–privileged=true 挂载文件权限设置
–restart unless-stopped 设置 开机后自动重启容器
-v /opt/docker/mysql8/conf/mysql:/etc/mysql 挂载配置文件
-v /opt/docker/mysql8/logs:/logs \ 挂载日志
-v /opt/docker/mysql8/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime 容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d mysql:8.0.32 后台启动,mysql
--lower_case_table_names=1  要加在镜像名后面,镜像名前面是参数,后面是mysql配置,不然会报错

查看容器状态

docker ps

五、配置远程连接

# 进入容器
docker exec -it mysql8 /bin/bash
 
# 打开MySQL 命令行 密码 123456
mysql -uroot -p
 
use mysql;

# 创建账户
CREATE USER 'adminx'@'%' IDENTIFIED BY '123456';
 
# 授权账户
GRANT ALL ON *.* TO 'adminx'@'%';

# 刷新权限

FLUSH PRIVILEGES;

六、密码正确,登录错误

2、进入容器
$ docker exec -it mysql bash
1
3、修改配置文件
3.1 进入 /etc/mysql/conf.d 文件目录:

$ cd /etc/mysql/conf.d
1
3.2 创建MySQL配置文件:mysql.cnf

$ touch mysql.cnf
1
3.3 在 mysql.cnf 配置文件中填充以下内容

[mysqld]
# 跳过密码登录
skip-grant-tables
1
2
3
3.4 退出容器,重启mysql容器

$ exit
$ docker restart mysql
————————————————
版权声明:本文为CSDN博主「阿兵哥哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Ayue1220/article/details/120350809

七、配置mysql的字符集

--验证字符集
show variables like "%char%";

 将宿主机上的文件复制到docker容器中,由于docker中无法使用vim

docker cp /usr/local/mysql8/mysql.cnf mysql8:/etc/mysql/conf.d
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 跳过密码登录
#skip-grant-tables
#bind-address = 127.0.0.1
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
lower_case_table_names=1

重启容器

docker restart mysql8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值