mysql_关于数据库的常用脚本.sh

mysql_关于数据库的常用脚本.sh

#/bin/bash
##### 关于 mysql 数据库的常用脚本 ##########

##### 01. mysql 数据库备份01 ##########
# 备份mysql数据库 单个数据库备份  备份所有数据库
# 此脚本为数据库自动备份脚本 可以配合# crontab -e定时任务
# 创建文件的时间
DATE=$(date +"%Y%m%d")
BACKUP_DIR="/data/backup/mysql"
MYSQL_USER="root"
MYSQL_PASSWORD='123456'
MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
# 除了哪些数据库不备份 剩余都会备份
SKIPDATABASES="Database|information_schema|performance_schema|mysql|test"
# 删除以前数据的天数
RETENTION=60
mkdir -p $BACKUP_DIR/$DATE
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`

for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done

find $BACKUP_DIR/* -mtime +$RETENTION -delete


##### 02. mysql 数据库备份02 ##########
#/bin/bash
# mysql数据库备份02
# 备份mysql数据库 每一个库单独备份 单是不备份系统数据库 备份目录为 /data/mysql_bak
# 需要加入 mysql 用户名 和 密码
echo "Dump mysql databases..."

DB_USER=root
DB_PASSWORD=123456
DB_PATH=/data/mysql_bak
mkdir -p $DB_PATH

DB_LIST=$(echo "show databases;" | mysql -u$DB_USER -p$DB_PASSWORD)
for db in ${DB_LIST}
do
  if [ $db != "Database" ] && [ $db != "mysql" ] &&
      [ $db != "phpmyadmin" ] && [ $db != "information_schema" ] &&
      [ $db != "performance_schema" ]; then
    echo "  backup "$db
    mysqldump -u$DB_USER -p$DB_PASSWORD --databases $db --lock-all-tables --master-data=2 > $DB_PATH/$db.sql
  fi
done


##### 03. mysql 数据库备份03 指定数据库备份 ################
#!/bin/bash
# 指定数据库备份  导出mysql数据库
while read line
do
    mysqldump -uroot -p123456 --databases $line --lock-all-tables --master-data=2 > /data/mysql_bak/$line.sql
done < a.txt


##### 04. mysql 还原 指定目录下的sql文件 ##################
#/bin/bash
# 还原mysql数据库 还原目录为/data/mysql_bak/ 下的所有数据库
# 需要添加 mysql用户名 密码

DB_USER=root
DB_PASSWORD=123456
DB_PATH=/data/mysql_bak
DB_LIST=$(ls $DB_PATH)

for db in ${DB_LIST}

do
    mysql -u$DB_USER -p$DB_PASSWORD < $DB_PATH/$db

done

##### 05. mysql数据库创建用户名及密码并授权 ################
#!/bin/bash
#同时读取两个文件进行循环
#1.txt存放用户名 2.txt存放密码  这里用户名和数据库名名是同一个
exec 3<"1.txt"
exec 4<"2.txt"
while read line1<&3 && read line2<&4
do
mysql -uroot -p19e9aa229f551984 <<EOF
        grant all privileges on $line1.* to $line1@'localhost' identified by '$line2';
EOF
done


##### 06. mysql 修改字段 ################
#/bin/bash
#修改mysql 中多个数据库 同名的表格中的字段内容
exec 3<"1.txt"
exec 4<"2.txt"
while read line1<&3 && read line2<&4
do
mysql -S -uroot -p123456 <<EOF
use $line1;
update wp_options set option_value = '$line2' where option_id = 1;
update wp_options set option_value = '$line2' where option_id = 2;

EOF
done


##### 07. 修改mysql密码 #############
#/bin/bash
#mysql数据库批量修改数据库密码
while read line
do
mysql -uroot -p123456 <<EOF
update mysql.user set authentication_string=password('4N7pHGdwyahEZDYD') where user='$line';

EOF
done < a.txt


##### 08. 获取wordpress数据库用户名密码 ################
#!/bin/sh
# 获取 wordpress 数据库的名字和用户名及密码
# 一般数据库名和用户名为同一个 如不同 打开注释
while read line
do
#       grep DB_NAME $line/wp-config.php | awk -F "'" '{print $4}'
        grep DB_USER $line/wp-config.php | awk -F "'" '{print $4}'
done < a.txt
echo
while read line
do
        grep DB_PASSWORD $line/wp-config.php | awk -F "'" '{print $4}'
done < a.txt



Teo

You must be logged in to post a comment