Docker部署MySQL8.X

发布时间 2024-01-03 10:11:45作者: 右手一个柚

1、拉取MySQL镜像

docker pull mysql

ps:这是拉取最新的mysqL版本(当前是8.0.27版本),若是要拉取指定版本,则可以在后面加上版本号(如:docker pull mysql:8.0.27)

2、查看镜像

docker images

3、创建存储MySQL数据信息的目录

在根目录下创建/data/docker/mysql目录,用于存储mysql的数据信息

mkdir /data/docker/mysql -p

ps:-p 作用是在创建多级文件时,不存在某一级文件就会自动创建,存在就使用原文件

4、创建容器

创建MySQL容器,并初始化root用户密码为 root@12345678

docker run -id --name=mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root@12345678 \
-e TZ=Asia/Shanghai \
-e LANG=en_US.UTF-8 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
--restart=always \
mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--lower_case_table_names = 1

如果想要创建一个新的用户,即在上面那个命令的基础上加上2个配置

-e MYSQL_USER="sgz" \
-e MYSQL_PASSWORD="123456" \

全命令语句如下:

docker run -id --name=mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root@12345678 \
-e MYSQL_USER="sgz" \
-e MYSQL_PASSWORD="123456" \
-e TZ=Asia/Shanghai \
-e LANG=en_US.UTF-8 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
--restart=always \
mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--lower_case_table_names = 1

命令配置解释:

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口 ,即将容器的3306端口映射到宿主机的3306端口
-e 代表添加环境变量, MYSQL_ROOT_PASSWORD 是 MySQL中root 用户的登陆密码,即初始化root用户的密码
-v /data/docker/mysql/conf:/etc/mysql/conf.d :MySQL配置目录挂载到宿主机
-v /data/docker/mysql/logs:/var/log/mysql :MySQL日志目录挂载到宿主机
-v /data/docker/mysql/data:/var/lib/mysql:MySQL数据目录挂载到宿主机,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载获取到数据。
--restart=always :当 Docker 重启时,容器能自动启动,这个必须放在镜像名前面
--character-set-server:为mysql字符集设置 可以不加
-e MYSQL_ROOT_PASSWORD=123456: 初始化 root 用户的密码
-e TZ=Asia/Shanghai :将容器中的时区设置为上海时区(即东8区),Docker容器默认使用UTC时区,与北京时间相差 8 个小时。
-v /etc/localtime:/etc/localtime:ro :修改容器时间和宿主机一致。
lower_case_table_names = 1 :数据库表名忽略大小写设置

5、查看容器

查看正在运行容器:docker ps
查看所有的容器(启动与未启动的容器):docker ps -a

6、登录Mysql容器测试

  1. 进入MySQL容器
docker exec -it mysql /bin/bash
  1. 登陆mysql, 密码是上面设的 root@12345678
mysql -u root -p

7、客户端连接测试

如果连接不上,则查看宿主机防火墙有没关闭或者是上面暴露端口号配置是否正确。

查看状态: systemctl status firewalld
关闭: systemctl stop firewalld
开机禁用: systemctl disable firewalld