############################################################## 建备份用户: create user 'backuser'@'localhost' identified by 'itsecu@890'; grant backup,select,insert,update,delete,create on DCOM.* to backuser@'localhost'; grant show view,lock tables,trigger,select,insert,update,delete,create on DCOM.* to backuser@'localhost'; update user set plugin='mysql_native_password',password=PASSWORD("itsecu@890") where user="backuser"; flush privileges;

############################################################## 拒绝登录解决: update user set plugin='mysql_native_password',password=PASSWORD("itsecu@890") where user="backuser"; 备份报错: UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='backuser';

############################################################## 设置安全登录: mysql_config_editor set --login-path=backtest --user=backuser --password

##############################################################

删库问题: 报: ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) 在库运行的情况下删除数据库数据目录下面的数据文件, 再建库,然后导入数据。

show create database DCOM; CREATE DATABASE DCOM /*!40100 DEFAULT CHARACTER SET utf8 */ ##############################################################

备份: 只导出数据库中的数据(不包含表结构): mysqldump --login-path=backuser --add-locks -q -t DCOM > test.sql 只导出数据库中的表结构(不包含数据): mysqldump --login-path=backuser --add-locks -q -d DCOM > test.sql 只导出表结构不包含数据: mysqldump --login-path=backuser --add-locks -q -d DCOM 表名> test.sql 只导出数据不导出表结构: mysqldump --login-path=backuser --add-locks -q -t DCOM 表名> test.sql 备份所有数据: mysqldump --login-path=backuser --add-locks -q DCOM > test.sql 恢复数据: 尽可能使用source mysql --login-path=backuser -e "source test.sql"

##############################################################

建库: mysql --login-path=test -e "CREATE DATABASE DCOM DEFAULT CHARACTER SET utf8;" 导入表结构: mysql --login-path=test -e "source /root/97tables.sql;" DCOM 导入数据: mysql --login-path=test -e "source /root/sql/2018-03-28/T_ADMIN_OPERATOR.sql;" DCOM mysql --login-path=test -e "source /root/sql/2018-03-28/T_ADMIN_PERMISSION.sql;" DCOM mysql --login-path=test -e "source /root/sql/2018-03-28/T_ADMIN_POST_PERMISSION.sql;" DCOM 查询表数据行数: mysql --login-path=test -e "select count(*) from DCOM.T_ADMIN_ROLE;"

############################################################## 备份数据库中数据表行数不为0的表中数据,不包括表结构: 20,0-1 All #!/bin/bash path=/opt/sql dir=mkdir $path/$(date +%Y-%m-%d) dir1=$(date +%Y-%m-%d) mysql --login-path=backuser -e "show tables from DCOM" > $path/$dir1/tables.txt

for i in cat $path/$dir1/tables.txt do number=mysql --login-path=backuser -e "select count(*) from DCOM.$i" | tail -1 if [ $number -gt 0 ] then echo "$i" >> $path/$dir1/datanum.txt else echo "$i" >> $path/$dir1/nodatanum.txt fi done

for tables in cat $path/$dir1/datanum.txt do mysqldump --login-path=backuser --add-locks -q -t DCOM $tables > $path/$dir1/$tables.sql done

rm -f $path/$dir1/{datanum.txt,nodatanum.txt,tables.txt}