MySQL - 権限
ナビゲーションに移動
検索に移動
概要
権限とは、ユーザがデータベースで実行することを許可されるアクションのことである。
セキュリティ上の理由から、一般的には、特定のユーザとしてデータを作成して、処理を行うことが望ましいとされている。
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アドレス>';