默认情况下,如果使用
select
*
from
mysql.
user
;
导出的只是全局权限,要想查看每个用户的具体权限,要使用
show grants
for
"youruser"@
'
yourip
'
;
如果要想导出所有的用户权限呢?应用场景--数据库迁移,使用下面的脚本(在国外网站看到)
#!
/
bin
/
bash
# Function export user privileges
expgrants()
{
mysql - B - u ' root ' - p ' 123456 ' - N $@ - e " SELECT CONCAT(
' SHOW GRANTS FOR ''' , user , ''' @ ''' , host, ''' ; '
) AS query FROM mysql. user " | \
mysql - u ' root ' - p ' 123456 ' $@ | \
sed ' s/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;} '
}
expgrants > . / grants.sql
# Function export user privileges
expgrants()
{
mysql - B - u ' root ' - p ' 123456 ' - N $@ - e " SELECT CONCAT(
' SHOW GRANTS FOR ''' , user , ''' @ ''' , host, ''' ; '
) AS query FROM mysql. user " | \
mysql - u ' root ' - p ' 123456 ' $@ | \
sed ' s/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;} '
}
expgrants > . / grants.sql