mysql中直接經過受權便可使用對應用戶,沒必要使用建立用戶命令(如CREATE USER 'xxx'@'%' IDENTIFIED BY 'XXX';)先建用戶再受權。mysql
方法一:該腳本能夠將全部受權數據到當前目錄下的sql腳本(grants.sql)中,使用grants.sql腳本刷到數據庫中便可完成受權數據遷移(注意:這裏導出的數據包含root用戶的受權關係,並且導入以後會把目前已有的數據覆蓋掉,請確認須要覆蓋再進行導入!!):sql
#!/bin/bash #Function export user privileges pwd=xiongge.club 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
注意:上述代碼中,須要根據實際狀況(mysql的root用戶的密碼)替換pwd的值。將上述代碼拷貝後,新建並貼到shell腳本(如exp_grants.sh)中執行該腳本便可完成數據庫用戶受權導出。
shell
方法二:該腳本能夠將全部受權數據到當前目錄下的sql腳本(create-users.sql)中,使用create-users.sql腳本刷到數據庫中便可完成受權數據遷移(注意:這裏導出的數據包含root用戶的受權關係,並且導入以後會把目前已有的數據覆蓋掉,請確認須要覆蓋再進行導入!!)數據庫
#!/bin/bash #Function export user privileges hostname=localhost username=root password=xiongge.club
port=3306 echo "select concat('show grants for ''',user,'''@''',host, ''';') from mysql.user " | \ mysql --host=$hostname --user=$username --password=$password --port=$port -N | \ mysql --host=$hostname --user=$username --password=$password --port=$port -N | \ sed "s/$/;/" > create-users.sql
注意:上述代碼中,須要根據實際狀況替換hostname、username、password、port的值。將上述代碼拷貝後,新建並貼到shell腳本(如exp_grants.sh)中執行該腳本便可完成數據庫用戶受權導出。bash