『练习』:
实验前安装mariadb数据库,并初始化设置超级用户密码为westos
当数据库mariadb存在并开启时,/var/lib/mysql/mysql.sock
文件才会存在
#!/bin/bash
if [ ! -e "/var/lib/mysql/mysql.sock" ] /*判断mariadb数据库是否存在并开启*/
then
echo -e "\033[31mMysql is not running !\033[0m"
exit 1
fi
if [ -z "$1" ] /*判断脚本执行命令后是否有跟密码*/
then
echo -e "\033[31mPlease input password following script !\033[0m"
exit 2
fi
mysql -uroot -p$1 -e "SHOW DATABASES;" &> /dev/null /*使用超用户身份登陆数据库*/
if [ ! "$?" = "0" ] /"$?"值不为0说明登陆数据库失败*/
then
echo -e "\033[31mPassword error\033[0m"
exit 1
fi
ACTION()
{
read -p "Please input action: " CHOSE
case $CHOSE in
O|o)
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
B|b)
mv /mnt/mysqldump/${2}.sql /mnt/mysqldump/${2}_backup.sql
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
S|s)
;;
*)
echo -e "\033[31mWrong Action !!! Please input o|b|s !\033[0m"
ACTION
esac
}
for DATABASE in `mysql -uroot -p$1 -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v` /*过滤出数据库名称*/
do
[ -d "/mnt/mysqldump" ] || mkdir -p /mnt/mysqldump
if [ ! -e "/mnt/mysqldump/${DATABASE}.sql" ]
then
mysql -uroot -p$1 $DATABASE > /mnt/mysqldump/${DATABASE}.sql
else
echo -e "\033[31m/mnt/mysqldump/${DATABASE}.sql is already exist !\033[0m"
echo -e "\033[32m[O]verwrite [B]ackup [S]kip\033[0m"
ACTION $1 $DATABASE
fi
done
执行mysql -uroot -p$1 -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v
命令是为了过滤出数据库的名称
mysql -uroot -p$1 -e "SHOW DATABASES;"
以表格形式显示数据库
mysql -uroot -p$1 -e "SHOW DATABASES;" -E
以*、行号、数据库通称Database作为分隔显示数据库
mysql -uroot -p$1 -e "SHOW DATABASES;" -EN
以*、行号作为分隔显示数据库