MySQL导出权限并生成SQL文件

1、首先我们需要创建一个bash脚本,取名mysql_exp_grants.sh,默认最好用root权限去操作,脚本内容如下:

#!/bin/bash
#传入mysql用户名,最好是用root,否者可能没有权限操作
MYSQL_USER=$1
#传入mysql密码
MYSQL_PWD=$2
#传入mysql的ip地址
MYSQL_IP=$3
#传入mysql端口
MYSQL_PORT=$4
mysql_exp_grants()
{
  mysql -B -u${MYSQL_USER} -p${MYSQL_PWD} -h ${MYSQL_IP} -P${MYSQL_PORT} -N $@ -e "SELECT CONCAT(
    'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
    ) AS query FROM mysql.user" | \
  mysql -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_IP} -P${MYSQL_PORT} $@ | \
  sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}'
}
mysql_exp_grants > ./mysql_exp_grants-$3.sql

2、保存脚本后执行命令:
[root@mysql ~]#sh mysql_exp_grants.sh root root123 192.168.1.20 3306
会在当前目录下生成:mysql_exp_grants-192.168.1.20.sql ,这样的文件,里面就是我们需要的整库用户权限。
3、由于我们导出的是所有用户权限,生成的SQL里面也包含root权限等脏数据,建议审核一下再去新库执行,如迁往RDS等云库的时候。

你可能感兴趣的:(Mysql)