スキップしてメイン コンテンツに移動

投稿

4月, 2020の投稿を表示しています

MySQLのユーザーの全権限をsqlで取得する方法

MySQLのユーザーの権限は「show grants for user@host」のようにコマンドを実行すれば取得できます。 すべてのユーザーを取得する場合は、mysql.userテーブルからユーザーとホストを取得し、concat関数を使って、全ユーザー分のshow grantsコマンドをsqlとして取得すると楽です。 下記に例を示します。 # 全ユーザー分のshow grants実行コマンドをsqlファイルに出力 mysql -N -e 'SELECT CONCAT("SHOW GRANTS FOR `", user, "`@`", host, "`;") FROM mysql.user order by user, host' > /tmp/show_grants_for_all_users.sql; # 生成したsqlファイルをmysqlで実行させて、あとはlinuxのコマンドを駆使して加工 # 下記は、取得したGRANT文をREVOKEに変換し、権限を削除するためのsqlを生成する例になります。 cat /tmp/show_grants_for_all_users.sql | mysql -N |egrep 'what you would like to extract' | grep -v USAGE | sed -e "s/GRANT/REVOKE/g" -e "s/$/;/g" -e "s/TO/FROM/g" > /tmp/mysql_revoke_example.sql