除了导数据外, 有时候还要导出用户授权信息.
而官方的show grants 命令一次只能查询一个用户
SHOW GRANTS [FOR user]常用的做法就是写脚本, 但这么个小事情还专门写脚本就太麻烦了.
我们可以通过如下SQL得到查询所有用户授权信息的SQL
select concat('show grants for "',user,'"@"',host,'";') from mysql.user;
然后再手动复制执行即可. 但这样不符合自动化的要求.
于是我们小改一下
echo """select concat('show grants for \"',user,'\"@\"',host,'\";') from mysql.user;""" | mysql -h127.0.0.1 -P3308 -p123456 -NB | mysql -h127.0.0.1 -P3308 -p123456 -NB
这样便得到了所有用户的授权信息. 但是不美观. 再小小的优化一下
MYSQL_CONN="mysql -h127.0.0.1 -P3308 -p123456 -NB"
echo """select concat('show grants for \"',user,'\"@\"',host,'\";') from mysql.user;""" | $MYSQL_CONN|$MYSQL_CONN
这样便好看多了.
以后有导出授权DDL的时候就可以跑这个命令了.
当然导出创建用户的DDL也是同理, 其它DDL都是同理.
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。