?
?? Clone user / Dump views in MySQL
?
?
1. 数据库搬迁或复制的时候,需要同步MySQL user 及其权限,创建了脚本操作,如下:
?
?
#!/bin/bash -l
if [ $# -lt 1 ]; then
echo "usage: $0 [MySQLHost]"
exit 1
fi
MySQLHost=${1}
MySQLbin="`which mysql`"
if [ ! -f "${MySQLbin}" ]; then
MySQLbin="/usr/local/mysql/bin/mysql"
fi
if [ ! -f "${MySQLbin}" ]; then
echo "can‘t find the mysql command,please check"
exit 1
fi
echo "SELECT DISTINCT CONCAT (\"show grants for ‘\", user, \"‘@‘\", host, \"‘;\") AS query FROM mysql.user where user not in (‘root‘,‘mysql‘) and trim(ifnull(user,‘‘))!=‘‘; " > script.sql
read -s -p "Enter the mysql password: "
if [ "$REPLY" == "" ]; then
echo "no password typed, the program will exit"
exit 1
fi
"${MySQLbin}" -h"${MySQLHost}" -umysql -p"${REPLY}" < script.sql > output.sql ;
cat output.sql | grep show > output1.sql ; rm output.sql -f ;
output_file="grants_for_mysql_account_on_${1}.sql"
"${MySQLbin}" -h"${MySQLHost}" -umysql -p"${REPLY}" < output1.sql > ${output_file} ;
clear
echo "-----Exported Grants-----"
sed -i ‘s/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}‘ "${output_file}"
cat "${output_file}" ; rm output1.sql -f
echo "-------------------------"
echo "generated ${output_file}"
rm script.sql -f
?
?
?2. 有时候,只需要备份或导出并搬迁一个数据库的所有 View,
可用命令如下:
mysql INFORMATION_SCHEMA --skip-column-names --batch -e "select table_name from tables where table_type = ‘VIEW‘ and table_schema = ‘db‘" | xargs mysqldump db > /tmp/views_db.sql
?
Clone user / Dump views in MySQL
原文:http://ucstudio.iteye.com/blog/2261114