「MySQL - 権限」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

30行目: 30行目:
<br>
<br>
ユーザに権限を付与するために使用される基本的なシンタックスを示す。<br>
ユーザに権限を付与するために使用される基本的なシンタックスを示す。<br>
<syntaxhighlight lang="mysql">
  GRANT <権限の種類> ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
  GRANT <権限の種類> ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
  GRANT <権限の種類> ON <データベース名>.<テーブル名> TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
  GRANT <権限の種類> ON <データベース名>.<テーブル名> TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
   
   
  例. 全てのデータベースおよびテーブルに対して、hogeユーザにInsert権限を付与する場合
  -- : 全てのデータベースおよびテーブルに対して、hogeユーザにInsert権限を付与する場合
  GRANT INSERT ON *.* TO 'hoge'@'localhost';
  GRANT INSERT ON *.* TO 'hoge'@'localhost';
   
   
  例. piyoデータベースの全てのテーブルに対して、hogeユーザにInsert権限を付与する場合
  -- : piyoデータベースの全てのテーブルに対して、hogeユーザにInsert権限を付与する場合
  GRANT INSERT ON piyo.* TO 'hoge'@'localhost';
  GRANT INSERT ON piyo.* TO 'hoge'@'localhost';
   
   
  例. piyoデータベースのfugaテーブルに対して、hogeユーザにInsert権限を付与する場合
  -- : piyoデータベースのfugaテーブルに対して、hogeユーザにInsert権限を付与する場合
  GRANT INSERT ON piyo.fuga TO 'hoge'@'localhost';
  GRANT INSERT ON piyo.fuga TO 'hoge'@'localhost';
-- 例: 特定のテーブルに対して、hogeユーザにCRUD権限を付与する場合
GRANT SELECT, UPDATE, INSERT, DELETE ON <データベース名>.<テーブル名> TO 'hoge'@'localhost';
</syntaxhighlight>
<br>
<br>
全てのデータベースに対して、ユーザに全ての権限を付与する。<br>
全てのデータベースに対して、ユーザに全ての権限を付与する。<br>
<syntaxhighlight lang="mysql">
  GRANT ALL PRIVILEGES ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
  GRANT ALL PRIVILEGES ON *.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
</syntaxhighlight>
<br>
<br>
特定のデータベースに対して、ユーザに全ての権限を付与する。<br>
特定のデータベースに対して、ユーザに全ての権限を付与する。<br>
<syntaxhighlight lang="mysql">
  GRANT ALL PRIVILEGES ON <データベース名>.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
  GRANT ALL PRIVILEGES ON <データベース名>.* TO '<ユーザ名>'@'<ホスト名またはIPアドレス>';
</syntaxhighlight>
<br><br>
<br><br>



2024年1月14日 (日) 15:29時点における版

概要

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

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

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';
 
 -- 例: 特定のテーブルに対して、hogeユーザにCRUD権限を付与する場合
 GRANT SELECT, UPDATE, INSERT, DELETE ON <データベース名>.<テーブル名> 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アドレス>';


権限を全て削除する。

 # 全てのデータベースおよびテーブルにおいて、ユーザの全ての権限を削除する
 REVOKE ALL PRIVILEGES ON *.* FROM '<ユーザ名>'@'<IPアドレス / ホスト名 / %>';
 
 # 特定のデータベースおよびテーブルにおいて、ユーザの全ての権限を削除する
 REVOKE ALL PRIVILEGES ON <データベース名>.<テーブル名> FROM '<ユーザ名>'@'<IPアドレス / ホスト名 / %>';