【MySQL】ユーザに権限を付与・取消・反映する方法


ここでは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