ここではMySQLで、ユーザに権限を付与・取消・反映するSQLを紹介しています。
ユーザに権限を付与する基本構文
ユーザにシステム権限を付与するときはGRANT文を使います。
GRANT文では、システム権限名とユーザ名を指定します。
GRANT 権限タイプ1[,権限タイプ2・・・] ON 権限レベル TO ユーザ名;
GRANT文を使ったSQLサンプル
ここからはGRANT文を使ったSQLサンプルを紹介します。
権限を1つ付与する方法
GRANT文を使ってシステム権限を1つ付与する方法です。
次のSQLでは、USER1にdb1データベースの全ての表への参照権限を付与しています。さらにtb1表への挿入権限を付与しています。
GRANT SELECT ON db1.* TO user1;
GRANT INSERT ON db.tb1 TO user1;
同時に複数の権限を付与する方法
次のSQLでは、USER1にtb1表への更新権限と削除権限を同時に付与しています。
GRANT UPDATE,DELETE ON db.tb1 TO user1;
全権限を付与する方法
全権限を付与する場合は、ALLキーワードを使います。
--tb1テーブルの全権限を付与
GRANT ALL ON db1.tb1 TO user1;
--db1データベースの全権限を付与
GRANT ALL ON db1.* TO user1;
--全データベースの全権限を付与
GRANT ALL ON *.* TO user1;
ユーザの権限を取消する基本構文
ユーザの権限を取消(削除)するときはREVOKE文を使います。
REVOKE文では、取り消したい権限名とユーザ名を指定します。
GRANT 権限名 FROM ユーザ名;
REVOKE文を使ったSQLサンプル
ここからはREVOKE文を使ったSQLサンプルを紹介します。
権限を1つ取り消す方法
REVOKE SELECT ON db1.* FROM user1;
REVOKE INSERT ON db.tb1 FROM user1;
権限を複数同時に取り消す方法
REVOKE UPDATE,DELETE ON db.tb1 FROM user1;
全ての権限を取り消す方法
--tb1テーブルの全権限を削除
REVOKE ALL ON db1.tb1 FROM user1;
--db1データベースの全権限を削除
REVOKE ALL ON db1.* FROM user1;
--全データベースの全権限を削除
REVOKE ALL ON *.* FROM user1;
権限情報を反映する方法: FLUSH PRIVILEGES
権限情報をメモリに反映させるために、FLUSH PRIVILEGESコマンドを使います。
FLUSH PRIVILEGESとコマンドを入力することで実行できます。
FLUSH PRIVILEGES
この他にも、下記のコマンドで権限情報のリロードが可能です。
mysqladmin flush-privileges
または
mysqladmin reload