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

広告
eyecatch

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

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

ユーザーに対して設定した権限を削除するには 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 文を使ってユーザーに設定された権限を削除する方法について解説しました。

MySQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。