唠嗑

搞到凌晨两点,真是气死我辣,踩了一堆坑,最后确定了用这套方案


准备

利用mysql_config_editor工具来配置Mysql的登录路径,它可以让你以安全的方式保存Mysql用户名和密码,说到底就是配置了之后,就不需要你手动输密码了,直接指定这个路径就行

mysql_config_editor set --login-path=backup --user=root --password
# mysql_config_editor set:指定要进行设置操作,即添加一个新的登录路径或修改现有路径。
--login-path=backup:指定一个登录路径名称为 backup。这个路径名可以是任意名称,用于区分不同的配置(比如 backup 和 admin 可以是两个不同的登录配置)。之后,你可以使用 --login-path=backup 来调用这个路径,避免手动输入用户名和密码。
--user=root:指定 MySQL 用户名为 root。
--password:指定需要输入密码。运行命令时,它会提示你输入密码,不会在命令中直接显示密码(为了安全)。这个密码会被加密并安全地存储在 MySQL 配置文件中。

生成后路径:~/.mylogin.cnf


如何删除?

可以直接删除文件,也可以命令

mysql_config_editor remove --login-path=backup

备份脚本

#!/bin/bash

# 设置变量
# 设置备份文件存储的路径(可以根据需要更改为你的备份文件夹路径)
BACKUP_DIR="/path/backup"

# 设置日期格式,以便将日期添加到备份文件名中
DATE=$(date +"%Y%m%d_%H%M%S")

# 设置备份文件名
BACKUP_FILE="$BACKUP_DIR/mysql_backup_$DATE.sql"

# 检查备份目录是否存在,如果不存在则创建它
if [ ! -d "$BACKUP_DIR" ]; then
    echo "备份目录不存在,正在创建: $BACKUP_DIR"
    mkdir -p "$BACKUP_DIR"
fi

# 开始备份
echo "开始备份MySQL数据库..."

# 使用 mysqldump 命令备份数据库
# 使用 --login-path=backup 指定加密存储的用户和密码信息
mysqldump --login-path=backup --all-databases > "$BACKUP_FILE"

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "数据库备份成功,生成文件: $BACKUP_FILE"
else
    echo "数据库备份失败!"
    exit 1
fi

# 压缩备份文件
echo "正在压缩备份文件..."
gzip "$BACKUP_FILE"

# 检查压缩是否成功
if [ $? -eq 0 ]; then
    echo "压缩成功,生成文件: $BACKUP_FILE.gz"
else
    echo "压缩失败!"
    exit 1
fi

echo "备份完成。"

然后再整个计划任务就行