-
我们下载5.7.23
docker pull mysql:5.7.23
- 创建挂载目录
mkdir -p /home/test/mysql/etc
mkdir -p /home/test/mysql/data
mkdir -p /home/test/mysql/backup/data
- 启动容器
docker run -d \
-p 3306:3306 \
--name mysql5.7.001 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
-v /home/test/mysql/etc:/etc/mysql/conf.d \
-v /home/test/mysql/data:/var/lib/mysql \
mysql:5.7.23
–name:给新创建的容器命名,此处命名为mysql5.7.001
-e MYSQL_ROOT_PASSWORD:配置信息,此处配置mysql的root用户的登陆密码
-e TZ:时区
-p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
-d:成功启动容器后输出容器的完整ID
最后一个mysql指的是mysql镜像名字
- 新建
/home/test/mysql/etc/my.cnf,输入如下内容
[mysqld]
skip-name-resolve
lower_case_table_names=1
character-set-server=utf8
init_connect='SET NAMES utf8'
注意:如果启动的服务器没有设置时区,则需要追加8小时
default-time-zone = '+08:00'
- 开启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
- 创建新账号
连接容器设置root可以远程访问,并登陆mysql
docker exec -it mysql5.7.001 /bin/bash
删除root远程访问
mysql -uroot -p --default-character-set=utf8
use mysql;
delete from user where user = "root" and host = "%";
flush privileges;
创建demo账户并允许远程访问
mysql -uroot -p --default-character-set=utf8
create database demo character set 'utf8';
create user 'test'@'%' identified by '123456';
grant all privileges on demo.* to test@'%' identified by '123456';
grant all privileges on demo.* to test@localhost identified by '123456';
flush privileges;
exit
exit
重启容器
docker restart mysql5.7.001
请自行远程连接测试
- 备份(可选)
创建脚本
vim /home/test/mysql/backup/mysqlbak.sh
追加内容
#!/bin/bash
backpath=/home/test/mysql/backup/data/
D=`date +%Y-%m-%d_%H%M%S`
name=$D.sql.gz
param=$1
docker exec -it mysql5.7.001 mysqldump -udemo -p123456 $param --skip-lock-tables | gzip > $backpath$param$name
创建定时任务
执行
crontab -e
追加内容
00 01 * * * /home/test/mysql/backup/mysqlbak.sh demo
- 导入SQL文件(可选)
连接到docker mysql
docker exec -it mysql5.7.001 /bin/bash
执行脚本
mysql -uroot -p --default-character-set=utf8
use demo
source /var/lib/mysql/demo.sql
exit