Clone user / Dump views in MySQL

 
   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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值