docker 安装mysql 定时备份 创建用户

244 阅读2分钟

如未安装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

image.png

创建用户授权

# 创建用户: 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;