步骤
1、拉取镜像
docker pull mysql:8.0.29
或者可以自己去仓库找你想要的版本
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