目录
3.复制mysql配置文件到主机的home/database/mysql/conf目录下
(建议)mysql版本:5.7.38(注意:不要用5.7版本,会报错)
1.拉取镜像
docker pull mysql:5.7.38
2.运行镜像
docker run -p 3306:3306 --name mysql -v /home/database/mysql/conf:/etc/mysql/conf.d -v /home/database/mysql/logs:/var/log/mysql -v /home/database/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.38 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
3.复制mysql配置文件到主机的home/database/mysql/conf目录下
docker cp mysql:/etc/my.cnf /home/database/mysql/conf
4.停止容器、删除容器、重新启动容器
docker stop mysql
docker rm mysql
docker run -p 3306:3306 --name mysql -v /home/database/mysql/conf/my.cnf:/etc/my.cnf -v /home/database/mysql/conf:/etc/mysql/conf.d -v /home/database/mysql/logs:/var/log/mysql -v /home/database/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.38 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
命令解释说明:
-p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
--name mysql:运行服务名字
-v /home/database/mysql/conf/my.cnf:/etc/my.cnf 配置文件挂载
-v /home/database/mysql/conf:/etc/mysql/conf.d :文件挂载
-v /home/database/mysql/logs:/var/log/mysql:文件挂载
-v /home/database/mysql/data:/var/lib/mysql :文件挂载
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d mysql:5.7.38 : 后台程序运行mysql5.7.38
–character-set-server=utf8mb4 :设置字符集
–collation-server=utf8mb4_unicode_ci:设置校对集
5.查看binlog、开启binlog
show variables like 'log_bin';
开启binlog
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
重启mysql容器
docker restart mysql
6.删除数据库
删除镜像后,重新安装,由于挂载了数据在主机中,重新安装后,原来的账号密码、以及数据还都在。
如果需要安装全新的mysql,则先删除文件夹:/home/database/mysql。在重新按上面的安装一遍即可。
7.建立用户
root/123456这个默认账户是无法创建数据库的。这里我们新建一个账户
docker exec -it mysql bash
mysql> mysql -u root -p 123456
mysql> CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
mysql> grant all privileges on *.* to root@'%';
mysql> flush privileges;
8、修改数据库密码
0、进入mysql容器内部
docker exec -it mysql bash
1、进入mysql命令行
mysql -uroot -p
输入原密码
2、修改密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
3、重启docker
exit
exit
docker restart mysql