Docker搭建Mysql8.0

886 阅读1分钟

步骤

1、拉取镜像

docker pull mysql:8.0.29

或者可以自己去仓库找你想要的版本

DockerHub-->Mysql

2、创建文件存储目录

mkdir /data/docker/mysql/etc
mkdir /data/docker/mysql/logs
mkdir /data/docker/mysql/data
mkdir /data/docker/mysql/mysql-files

3、创建配置文件

vim /data/docker/mysql/etc/my.cnf

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
character_set_server=utf8mb4
collation-server=utf8mb4_general_ci
symbolic-links=0
explicit_defaults_for_timestamp=true
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
max-connections = 1000
max_user_connections = 1000
#innodb_buffer_pool_size=1G
#innodb_buffer_pool_chunk_size=128M
#innodb_buffer_pool_instances=8
#key_buffer_size = 1024M
#sort_buffer_size = 16M
#join_buffer_size = 16M
#read_buffer_size = 4M

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4

4、运行MySql

docker run \
--name mysql8 \
-v /data/docker/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/docker/mysql/data:/var/lib/mysql \
-v /data/docker/mysql/log:/var/log \
-v /data/docker/mysql/mysql-files:/var/lib/mysql-files \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='root' \
-d mysql:8.0.29

解析:

--name:指定容器名称

-v:挂载,将本机某个文件或文件夹映射到容器的某个位置,语法:-v 本机目录地址:容器目录地址

-p 指定映射端口,语法:-p 本机端口:容器端口

-e 设置环境变量

-d 代表该容器支持后台运行

最后的mysql:8.0.29表示你要运行哪个镜像,镜像名+版本号

5、进入容器

docker exec -it mysql8 /bin/bash

连接mysql

mysql -uroot -p

执行以下命令

SET PASSWORD = PASSWORD('root');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;              

use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;

常见问题

容器系统时间不对

1、拷贝文件

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2、重新容器

docker restart mysql8