MySQL - 権限

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2022年10月15日 (土) 02:31時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == 権限とは、ユーザがデータベースで実行することを許可されるアクションのことである。<br> <br> セキュリティ上の理由から、一般的には、特定のユーザとしてデータを作成して、処理を行うことが望ましいとされている。<br> <br> MySQLのユーザの権限を以下に示す。<br> * All PRIVILEGES *: データベースへのフルアクセス権を持つ。 * SELECT *: デー…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

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

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

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


あるユーザが現在持っている全ての権限を表示する。

SHOW GRANTS FOR <ユーザ名>;



権限の削除

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

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