MySQL - 権限

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2022年10月15日 (土) 08:30時点におけるWiki (トーク | 投稿記録)による版 (→‎権限の確認)
ナビゲーションに移動 検索に移動

概要

権限とは、ユーザがデータベースで実行することを許可されるアクションのことである。

セキュリティ上の理由から、一般的には、特定のユーザとしてデータを作成して、処理を行うことが望ましいとされている。

MySQLのユーザの権限を以下に示す。

  • All PRIVILEGES
    データベースへのフルアクセス権を持つ。
  • SELECT
    データベースの情報を読み取ることができる。
  • UPDATE
    テーブルの行を更新することができる。
  • INSERT
    テーブルへのレコードの挿入ができる。
  • DELETE
    テーブルからレコードの削除ができる。
  • CREATE
    新規にテーブルやデータベースを作成することができる。
  • DROP
    テーブルやデータベース全体を削除することができる。
  • GRANT
    他のユーザの権限を変更することができる。



権限の付与

ユーザにどの程度の権限を付与するかどうかに応じて、以下の権限のうち1つ、または、複数を付与することができる。

MySQLサーバに接続する。

mysql -u <ユーザ名> -p


ユーザに権限を付与するために使用される基本的なシンタックスを示す。

GRANT <権限の種類> ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
GRANT <権限の種類> ON <データベース名>.<テーブル名> TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';

例. 全てのデータベースおよびテーブルに対して、hogeユーザにInsert権限を付与する場合
GRANT INSERT ON *.* TO 'hoge'@'localhost';

例. piyoデータベースの全てのテーブルに対して、hogeユーザにInsert権限を付与する場合
GRANT INSERT ON piyo.* TO 'hoge'@'localhost';

例. piyoデータベースのfugaテーブルに対して、hogeユーザにInsert権限を付与する場合
GRANT INSERT ON piyo.fuga TO 'hoge'@'localhost';


全てのデータベースに対して、ユーザに全ての権限を付与する。

GRANT ALL PRIVILEGES ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';


特定のデータベースに対して、ユーザに全ての権限を付与する。

GRANT ALL PRIVILEGES ON <データベース名>.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';



権限の確認

MySQLサーバに接続する。

mysql -u <ユーザ名> -p


権限を確認するユーザ名とホストを確認する。

SELECT user, host FROM mysql.user;


ユーザが現在持っている全ての権限を表示する。
最初のレコードはユーザ作成時に自動付与された権限であり、2つ目以降のレコードは後から付与した権限である。

SHOW GRANTS FOR <ユーザ名>;
# または
SHOW GRANTS FOR <ユーザ名>@<ホスト名またはIPアドレス>


現在ログインしているユーザの権限を確認する。

SHOW GRANTS;



権限の削除

特定のユーザから権限を削除する場合、REVOKEコマンドを使用する。
これは、GRANTコマンドと同様のシンタックスである。

REVOKE <権限の種類> ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
REVOKE <権限の種類> ON <データベース名>.<テーブル名> TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';