(十)Docker 安装 MySQL:5.7.23

503 阅读2分钟
  1. 官方 hub.docker.com/_/mysql/

  2. 我们下载5.7.23

docker pull mysql:5.7.23
  1. 创建挂载目录
mkdir -p /home/test/mysql/etc
mkdir -p /home/test/mysql/data
mkdir -p /home/test/mysql/backup/data
  1. 启动容器
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镜像名字

  1. 新建/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'

  1. 开启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
  1. 创建新账号

连接容器设置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

请自行远程连接测试

  1. 备份(可选)

创建脚本

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
  1. 导入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