ユーザーから権限を削除する(REVOKE文)

MySQL では作成済みのユーザーから権限を削除するときに REVOKE 文を使用します。ここでは MySQL でユーザーに設定した権限を削除する方法について解説します。

(Last modified: )

ユーザーから権限を削除する

ユーザーに対して設定した権限を削除するには REVOKE 文を使います。書式は次の通りです。

REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user_or_role [, user_or_role] ...

REVOKE ALL [PRIVILEGES], GRANT OPTION
    FROM user_or_role [, user_or_role] ...

REVOKE PROXY ON user_or_role
    FROM user_or_role [, user_or_role] ...

REVOKE role [, role ] ...
    FROM user_or_role [, user_or_role ] ...

user_or_role: {
    user
  | role
}

基本となる書式は次のようになります。

REVOKE priv_type[, priv_type] ON priv_level FROM user

ユーザー( user )に対して指定のレベル( priv_level )で設定された指定の種類の権限( priv_type )を削除します。複数の権限をまとめて削除する場合はカンマ(,)で区切って続けて記述します。

権限やレベルの指定方法は権限を設定する時に使用する GRANT 文と同じです。(詳しくは「ユーザーに権限を設定する(GRANT文)」を参照して下さい)。

-- --

では実際に試してみます。現在 saru@localhost ユーザーはグローバルレベルで CREATE USER 権限、データベースレベルで SELECT と CREATE の権限が設定されています。

show grants for saru@localhost;

ユーザーから権限を削除する(1)

このユーザーからデータベースレベルでの CREATE 権限を削除するには次のように実行します。

revoke create on mydb.* from saru@localhost;

ユーザーから権限を削除する(2)

権限が削除されました。それでは改めて saru@localhost に設定されている権限を確認してみます。

ユーザーから権限を削除する(3)

データベースレベルでの CREATE 権限が削除されていることが確認できました。

すべての権限を削除する

ユーザーに設定されているすべての権限を削除する場合は次の書式を利用することができます。

REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user

では実際に試してみます。 saru@localhost ユーザーに設定されているすべての権限を削除します。

revoke all, grant option from saru@localhost;

すべての権限を削除する(1)

権限が削除されました。それでは改めて saru@localhost に設定されている権限を確認してみます。

ユーザーから権限を削除する(2)

権限がなにもないことを表す GRANT USAGE ON *.* TO `saru`@`localhost` が表示されました。

-- --

REVOKE 文を使ってユーザーに設定された権限を削除する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。