如何导出集群的权限信息?
warning:
这篇文章距离上次修改已过1648天,其中的内容可能已经有所变动。
通过编写脚本,先查询出集群的用户信息,再使用show grants
语句查询出该用户的权限。如:
[gbase@rhel6201 ~]$ cat get_privileges.sh
#!/bin/sh
user=$1
password=$2
/opt/gcluster/server/bin/gbase -u$user -p$password -e"select concat('show grants for ''',trim(user),'''@''',trim(host),''';') from gbase.user;" | grep 'grant' | grep -v concat > showgrants.sql
/opt/gcluster/server/bin/gbase -u$user -p$password < showgrants.sql | grep -v -i 'Grants for' | sed 's/\(GRANT .*\)/\1;/'
测试结果:
[gbase@rhel6201 ~]$ sh get_privileges.sh root
Enter password: 输入两次回车是因为root的密码为空。
Enter password:
GRANT ALL PRIVILEGES ON *.* TO 'gbase'@'%' IDENTIFIED BY PASSWORD '*9C0ADBD7F08FA9D49D82760B104110C55B943B8D' WITH GRANT OPTION;
GRANT USAGE ON *.* TO 'jihui'@'%' IDENTIFIED BY PASSWORD '*DD4F4D0B20DEE5E8A4A7512FD870DAD13613E2CE';
GRANT SELECT ON "test".* TO 'jihui'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
[gbase@rhel6201 ~]$