作者:じ☆ve不哭
发布时间:2021-01-20T16:08:54
mysql: [Warning] Using a password on the command line interface can be insecure 在MySQL5.6+以上版本直接在shell中输入密码会提示次警告且无法连接成功,那我们应该怎么解决这个问题呢,答案就是使用 mysql_config_editor创建一个填写账号密码的隐藏配置文件登录时使用--login-path来引用
mysql_config_editor set --login-path=xxx --host=xxxxx --port=3306 --user=root --password
注意host在阿里云服务器上且用rds时使用内网ip
mysqldump --login-path=xxx 数据库名称 > /tmp/导出的文件名称.sql
此处的login-path对应第一步的名称
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
Date=`date +%Y-%m-%d_%H:%M:%S`
BucketTime=`date +%Y%m`
OldDate=$(date -d "-7 days" "+%Y-%m-%d")
###oss的地址###
Host="oss-cn-xxxx.aliyuncs.com"
###bucket名字###
Bucket="Bucket的名称"
###Access ID###
Id="xxx"
###Access Key###
Key="xxx"
### oss地址###
OssHost=$Bucket.$Host
### 第一步时指定login-path的xxx
LoginPath="xxx"
###备份数据库账号信息### grep -v 输出排除命令意思是mysql和information_schema不输出
DBS=`mysql --login-path=$LoginPath -Bse "show databases" | grep -v "information_schema" | grep -v "mysql"`
###罗列数据库信息###
#========================BackUp SQL========================
for dbName in $DBS; do
mysqldump --login-path=$LoginPath --set-gtid-purged=OFF $dbName > /tmp/$dbName.$Date.sql
###zip压缩设置的密码###
# zip -P 密码 /tmp/$dbName.$Date.sql.zip /tmp/$dbName.$Date.sql
zip /tmp/$dbName.$Date.sql.zip /tmp/$dbName.$Date.sql
sendData="数据库[$dbName]在$Date执行备份, 操作结果:"
if [ -s /tmp/$dbName.$Date.sql.zip ] ; then
source="/tmp/$dbName.$Date.sql.zip"
dest="$BucketTime/$dbName.$Date.sql.zip"
resource="/${Bucket}/${dest}"
contentType=`file -ib ${source} |awk -F ";" '{print $1}'`
dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`
url=http://${OssHost}/${dest}
echo "upload ${source} to ${url}"
curl -i -q -X PUT -T "${source}" \
-H "Host: ${OssHost}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: OSS ${Id}:${signature}" \
${url}
if [ $? -ne 0 ];then
# echo -e ""dbName $dbName $Date Fail Upload"" | mutt -s "'dbName $dbName $Date Fail Upload'" zsljava@163.com
sendData="$sendData 上传oss失败!"
else
# echo -e ""dbName $dbName $Date Success"" | mutt -s "'dbName $dbName $Date Success'" zsljava@163.com
rm -rf /tmp/$dbName.$OldDate*
sendData="$sendData 备份成功!"
fi
else
# echo -e ""dbName $dbName $Date Fail Backup "" | mutt -s "'dbName $dbName $Date Fail Backup'" zsljava@163.com
sendData="$sendData 备份失败!"
fi
curl --request POST \
--url 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxx' \
--header 'Content-Type: application/json' \
--header 'cache-control: no-cache' \
--data '{"msgtype": "text",
"text": {
"content": "'"$sendData"'"
}
}'
done
#========================BackUp SQL========================
脚本来自于互联网,自行调整部分代码,因关闭原网页后没找到原网页,所以没有注明来源。请谅解