如未安装docker,安装docker
docker安装mysql
#下载最新mysql
docker pull mysql
#查看镜像
docker images
#启动
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
备注:
--restart=always 开机自启动
--name 容器名称命名
-p 将本地主机的端口映射到docker容器端口
-e 配置mysql root密码123456
#登录mysql容器
docker exec -it mysql bash
#登录mysql
mysql -uroot -p123456
#修改可远程登录
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新权限
flush privileges;
docker-compose安装mysql,redis
#创建目录授权
mkdir -p /opt/docker/data/mysql && chmod 777 /opt/docker/data/mysql
mkdir -p /opt/docker/data/redis && chmod 777 /opt/docker/data/redis
mkdir -p /opt/docker/data/redis/conf && chmod 777 /opt/docker/data/redis/conf
version: '3'
services:
mysql:
environment:
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: "123456"
image: "docker.io/mysql:latest"
container_name: mysql
restart: always
volumes:
- /opt/docker/data/mysql:/var/lib/mysql
ports:
- "3306:3306"
redis:
image: redis:latest
restart: always
container_name: redis
command: redis-server --appendonly yes --requirepass "123456" --bind "0.0.0.0" --protected-mode "no"
ports:
- "6379:6379"
volumes:
- /opt/docker/data/redis:/data
- /opt/docker/data/redis/conf:/etc/redis/redis.conf
docker-comopose安装mysql。 MYSQL_ROOT_HOST: "%" 这个配置不生效,没找到原因,手动进容器去修改下吧;
定时备份
centos7 默认安装了 crontab,命令看一下
rpm -qa | grep crontab
没有安装则安装下
#安装
yum install -y crontabs
#查看状态
systemctl status crond
#新增脚本
vim mysql-back.sh
#! /bin/bash
# docker exec 【容器名称/容器ID】 mysqldump -u【mysql用户名】 -p【mysql密码】 【数据库名】 > 【备份路径】
docker exec mysql-new mysqldump -uroot -p8H0EUa7ZCgCNT2lnY otc > /opt/mysql-back/otc_$(date +%Y%m%d%H%M%S).sql
# 删除大于1天的备份文件,+1 代表天数
find /opt/mysql-back/ -mtime +1 -name "*.sql" -exec rm -rf {} \;
# 增加定时任务
crontab -e
# 每60分钟执行一次
*/60 * * * * /opt/mysql-back/mysql-back.sh
# 重启
service crond start
创建用户授权
# 创建用户: otcdb , 密码:123546
create user otcdb@'%' identified by '123546';
# 授权 otc 数据库
grant all privileges on otc.* to otcdb@'%';
# 修改可远程登录,修改密码为:8H0EUa7ZCgCNTd2lY
ALTER USER otcdb@'%' IDENTIFIED WITH mysql_native_password BY '8H0EUa7ZCgCNT2lY';
#刷新权限
flush privileges;
# 查询用户
use mysql;
select host,user from user;