ユーザーの権限を変更する

新規に MySQL のユーザーを作成した時にはグローバル権限を設定することができましたが、作成済みのユーザーに対してはデータベース単位などの権限を設定することができます。ここでは phpMyAdmin を使って作成済の MySQL のユーザーのグローバル権限を変更したり、データベース単位やテーブル単位での権限を設定する方法について解説します。

(2021 年 07 月 04 日公開 / 2022 年 04 月 08 日更新)

グローバル権限を編集する

作成済のユーザーの権限を変更します。 phpMyAdmin に管理者ユーザーでログインしたあと、画面上部の「ユーザーアカウント」をクリックしてください。

グローバル権限を編集する(1)

ユーザーの管理画面が表示されます。作成済みのユーザーの一覧が表示されます。

グローバル権限を編集する(2)

権限を変更したいユーザーの行に表示されている「権限を編集」をクリックしてください。

グローバル権限を編集する(3)

対象のユーザーの権限を編集する画面が表示されます。

グローバル権限を編集する(4)

最初に表示される画面がグローバル権限に関する編集画面です。もし別の画面が表示されていたら、画面上部の「グローバル」をクリックしてください。

グローバル権限を編集する(5)

現在権限が設定されている項目にチェックが入っています。

グローバル権限を編集する(6)

権限を追加する場合は追加する権限をクリックしてチェックを付けてください。権限を削除する場合は削除する権限をクリックしてチェックを外してください。今回は「構造」の「CREATE」と「ALTER」にチェックを追加しました。

グローバル権限を編集する(7)

編集が終わりましたら画面下部の「実行」をクリックしてください。

グローバル権限を編集する(8)

ユーザーの権限を変更しました。

グローバル権限を編集する(9)

画面上部には実際に実行された SQL 文が表示されています。今回は次のような SQL 文が実行されてユーザーの権限が変更されました。

REVOKE ALL PRIVILEGES ON *.* FROM 'yamada'@'localhost';

REVOKE GRANT OPTION ON *.* FROM 'yamada'@'localhost';

GRANT SELECT, CREATE, ALTER ON *.* TO 'yamada'@'localhost';

ALTER USER 'yamada'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

REVOKE 文によっていったん権限を取り消したあと、 GRANT 文によってユーザーに権限が設定されています。

あらためてユーザー管理画面を見てみると、先ほど権限を編集したユーザーのグローバル権限が変更されていることが確認できます。

グローバル権限を編集する(10)

データベース固有の権限を編集する

次に特定のデータベースに対する権限を編集する方法です。グローバル権限の場合と同じようにユーザーの権限を編集する画面を表示してください。

データベース固有の権限を編集する(1)

画面上部に表示されている「データベース」をクリックしてください。(「データベース」は 2 箇所に表示されているので場所に注意してください)。

データベース固有の権限を編集する(2)

データベース固有の権限を編集する画面が表示されます。現在ユーザーに対して設定されているデータベース固有の権限の一覧が表示されます。

データベース固有の権限を編集する(3)

すでに権限が一つでも追加されているデータベースに対して権限を編集する場合は、対象のデータベースの行に表示されている「権限を編集」をクリックします。まだ権限が一つも設定されていないデータベースに権限を追加する場合は作成済みのデータベースが表示されていますので権限を編集するデータベースを選択してから「実行」をクリックしてください。

今回はまだ権限が設定されていない「personal」データベースを選択し、「実行」をクリックしました。

データベース固有の権限を編集する(4)

選択したデータベースの権限を編集する画面が表示されます。

データベース固有の権限を編集する(5)

権限を追加する場合は追加する権限をクリックしてチェックを付けてください。権限を削除する場合は削除する権限をクリックしてチェックを外してください。今回は「データ」の「SELECT」「INSERT」「UPDATE」「DELETE」にチェックを追加しました。

データベース固有の権限を編集する(6)

編集が終わりましたら画面下部の「実行」をクリックしてください。

データベース固有の権限を編集する(7)

ユーザーの権限を変更しました。

データベース固有の権限を編集する(8)

画面上部には実際に実行された SQL 文が表示されています。今回は次のような SQL 文が実行されてユーザーの権限が変更されました。

GRANT SELECT, INSERT, UPDATE, DELETE ON `personal`.* TO 'yamada'@'localhost';

ALTER USER 'yamada'@'localhost';

GRANT 文によってユーザーに権限が設定されています。

あらためてデータベース固有の権限の画面を見てみると、先ほど権限を編集したユーザーのデータベース固有の権限が変更されていることが確認できます。

データベース固有の権限を編集する(9)

テーブル固有の権限を編集する

次に特定のテーブルに対する権限を編集する方法です。データベース固有の権限の場合と同じようにデータベース固有の権限を編集する画面が表示してください。

テーブル固有の権限を編集する(1)

権限を編集するテーブルが作成されているデータベースを選択します。対象のデータベースに対して権限が一つでも設定されている場合は、対象のデータベースの行に表示されている「権限を編集」をクリックします。まだ権限が一つも設定されていないデータベースに権限を追加する場合は作成済みのデータベースが表示されていますので権限を編集するデータベースを選択してから「実行」をクリックしてください。

今回は「personal」の行に表示されている「権限を編集」をクリックしました。

テーブル固有の権限を編集する(2)

データベース固有の権限を編集する画面が表示されますので画面上部の「テーブル」をクリックしてください。

テーブル固有の権限を編集する(3)

テーブル固有の権限を編集する画面が表示されます。現在ユーザーに対して設定されているテーブル固有の権限の一覧が表示されます。

テーブル固有の権限を編集する(4)

「以下のテーブルに権限を追加」の右に表示されているドロップダウンメニューをクリックして権限を設定するテーブルを選択してください。

テーブル固有の権限を編集する(5)

選択したテーブルの権限を編集する画面が表示されます。

テーブル固有の権限を編集する(6)

今回はテーブルに含まれる「id」カラムと「address」カラムに対する SELECT 権限を追加してみます。「SELECT」の下にあるカラム名を選択してください。設定が終わりましたら画面下部の「実行」をクリックしてください。

テーブル固有の権限を編集する(7)

ユーザーの権限を変更しました。

テーブル固有の権限を編集する(8)

画面上部には実際に実行された SQL 文が表示されています。今回は次のような SQL 文が実行されてユーザーの権限が変更されました。

GRANT SELECT ON `personal`.`address` TO 'yamada'@'localhost';

ALTER USER 'yamada'@'localhost';

GRANT 文によってユーザーに権限が設定されています。

あらためてテーブル固有の権限の画面を見てみると、先ほど権限を編集したユーザーのテーブル固有の権限が変更されていることが確認できます。

テーブル固有の権限を編集する(9)

-- --

phpMyAdmin を使って作成済の MySQL のユーザーのグローバル権限を変更したり、データベース単位やテーブル単位での権限を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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