目录

用 docker 运行 Mysql8 并持久化数据

用 docker 运行 Mysql8 并持久化数据

准备目录

1
2
#注意{}里面的子目录不能 有空格
mkdir -p /data/docker/mysql8/{data,logs,conf,bin,docker-entrypoint-initdb.d,conf/conf.d/}

拉取镜像

1
2
 
docker pull mysql:8.4.2

准备 mysql 数据库和用户初始化脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
/**注意修改数据库名 */
CREATE DATABASE IF NOT EXISTS mydatabase;
USE mydatabase;

/**修改标 名 */
CREATE TABLE IF NOT EXISTS mytable (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);

/**允许远程登录,注意修改数据库名、用户名、密码 */
create user 'username'@'%' identified by '1234';
grant all ON test.* to 'username'@'%';
flush privileges;

创建 mysql 容器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#修改下面的初始化数据库名和 root 密码
#创建默认数据库

dir=/data/docker/mysql8
dbname=test
rootpsw=123456
docker run -p 3306:3306 --name mysql8 \
  --privileged=true \
  --restart unless-stopped \
  -e MYSQL_ROOT_PASSWORD=$rootpsw \
  -e MYSQL_DATABASE=$dbname \
  -v $dir/conf:/etc/mysql \
  -v $dir/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d \
  -v $dir/logs:/logs \
  -v $dir/data:/var/lib/mysql \ 
  -v /etc/localtime:/etc/localtime \
  -d mysql:8.4.2
 

删除容器

1
2
docker stop mysql8
docker rm mysql8

进入容器mysql终端

1
2
docker  exec -it mysql8 bash
mysql -uroot -p

修改 root 密码

1
2
alter user 'root'@'localhost' identified by '1234456778';
flush privileges;