MySQL中導出用戶權限設置的劇本分享。本站提示廣大學習愛好者:(MySQL中導出用戶權限設置的劇本分享)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL中導出用戶權限設置的劇本分享正文
在對MySQL數據庫停止遷徙的時刻,有時刻也須要遷徙源數據庫內的用戶與權限。關於這個遷徙我們可以從mysql.user表來獲得用戶的相干權限來生成響應的SQL語句,然後在目的辦事器下去履行生成的SQL語句便可。本文供給了生成提取用戶權限的劇本並給出演示。
1、生成用戶權限的劇本
[root@HKBO ~]# more exp_grant.sh
#!/bin/bash
#Function export user privileges
pwd=123456
expgrants()
{
mysql -B -u'root' -p${pwd} -N $@ -e "SELECT CONCAT(
'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
) AS query FROM mysql.user" | \
mysql -u'root' -p${pwd} $@ | \
sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}'
}
expgrants > ./grants.sql
2、生成權限SQL劇本
[root@HKBO ~]# ./exp_grant.sh
[root@HKBO ~]# head grants.sql
-- Grants for [email protected]
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY PASSWORD '*EB3EA446C759C9DA93F84FCB56430DBEF051A9DD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `CNBO0815`.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
-- Grants for [email protected].%
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.10.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
-- Grants for [email protected].%
GRANT USAGE ON *.* TO 'CNBO'@'192.168.1.%' IDENTIFIED BY PASSWORD '*ABD91BAD4A3448428563952E281015B237310EA8';
...........................
3、在目的辦事器上履行劇本
將生成的劇本在目的辦事器上履行便可。 mysql -uname -ppwd <grants.sql
須要留意:
a、目的辦事上為非空辦事器,曾經存在一些賬戶及權限應斟酌會籠罩的成績。
b、假如僅僅須要遷徙非root用戶,可以在原劇本中添加過濾前提,即 where user<>'root' 。