用 docker 运行 Mysql8 并持久化数据
约 292 字
预计阅读 1 分钟
用 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;
|