MySQL GRANT ユーザー認証の実装

MySQL GRANT ユーザー認証の実装

承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータベースとテーブルを照会する権限を付与できます。 MySQL は、ユーザーの権限を設定するための GRANT ステートメントを提供します。

MySQL では、GRANT 権限を持つユーザーのみが GRANT ステートメントを実行できます。構文の形式は次のとおりです。

GRANT priv_type [(column_list)] ON database.table
ユーザー [[パスワード] 'password' によって識別] 宛て
[、user[[PASSWORD] 'password' によって識別]] ...
[with_option [with_option] で...]

で:

  • priv_type パラメータは権限の種類を示します。
  • columns_list パラメータは、権限が適用される列を示します。このパラメータを省略すると、テーブル全体に適用されます。
  • database.table は権限のレベルを指定するために使用されます。
  • ユーザー パラメータは、ユーザー名とホスト名で構成され、「'username'@'hostname'」という形式のユーザー アカウントを表します。
  • IDENTIFIED BY パラメータは、ユーザーのパスワードを設定するために使用されます。
  • パスワード パラメータはユーザーの新しいパスワードです。

WITH キーワードの後に​​は、1 つ以上の with_option 引数が続きます。このパラメータには 5 つのオプションがあり、それぞれの詳細は次のようになります。

  • GRANT OPTION: 承認されたユーザーはこれらの権限を他のユーザーに付与できます。
  • MAX_QUERIES_PER_HOUR カウント: 1 時間あたりに実行できるクエリの数を設定します。
  • MAX_UPDATES_PER_HOUR カウント: 1 時間ごとに実行できる更新の数を設定します。
  • MAX_CONNECTIONS_PER_HOUR カウント: 1 時間あたりに確立できる接続数を設定します。
  • MAX_USER_CONNECTIONS カウント: 単一のユーザーが同時に持つことができる接続の数を設定します。

MySQL では次の権限グループを付与できます。

  • 列の権限は、テーブル内の特定の列に関連しています。たとえば、UPDATE ステートメントを使用して、students テーブルの名前列の値を更新できます。
  • テーブル権限は、特定のテーブル内のすべてのデータに関連しています。たとえば、SELECT ステートメントを使用して、students テーブル内のすべてのデータの権限を照会できます。
  • データベース権限は、特定のデータベース内のすべてのテーブルに関連しています。たとえば、既存のデータベース mytest に新しいテーブルを作成する権限を付与できます。
  • ユーザー権限は MySQL 内のすべてのデータベースに関連しています。たとえば、既存のデータベースを削除したり、新しいデータベースを作成したりできます。

同様に、GRANT ステートメントで権限レベルを指定するために使用できる値の形式は次のとおりです。

  • *: 現在のデータベース内のすべてのテーブルを示します。
  • *.*: すべてのデータベース内のすべてのテーブルを示します。
  • db_name.*: データベース内のすべてのテーブルを表し、db_name はデータベース名を指定します。
  • db_name.tbl_name: データベース内のテーブルまたはビューを表します。db_name はデータベース名を指定し、tbl_name はテーブル名またはビュー名を指定します。
  • db_name.routine_name: データベース内のストアド プロシージャまたは関数を表します。routine_name は、ストアド プロシージャまたは関数の名前を指定します。
  • TO 句: 存在しないユーザーに権限が付与された場合、MySQL は自動的に CREATE USER ステートメントを実行してユーザーを作成しますが、同時にユーザーのパスワードを設定する必要があります。

権限タイプの説明

GRANT ステートメントにおける権限の種類について以下に説明します (詳細については、「MySQL ユーザー テーブルの詳細説明」セクションを参照してください)。

1) データベース権限を付与する場合、<権限タイプ> を次の値として指定できます。

権限名ユーザーテーブルのフィールドに対応する例示する
選択選択_privユーザーに、SELECT ステートメントを使用して特定のデータベース内のすべてのテーブルとビューにアクセスする権限が付与されていることを示します。
入れる挿入_privユーザーに、INSERT ステートメントを使用して特定のデータベース内のすべてのテーブルにデータ行を追加する権限が付与されていることを示します。
消去削除権限ユーザーに、DELETE ステートメントを使用して特定のデータベース内のすべてのテーブル内のデータ行を削除する権限が付与されていることを示します。
アップデート更新_privユーザーに、UPDATE ステートメントを使用して特定のデータベース内のすべてのデータ テーブルの値を更新する権限が付与されていることを示します。
参考文献参照_priv特定のデータベース内のテーブルを指す外部キーを作成する権限がユーザーに付与されていることを示します。
作成する作成_priv承認されたユーザーが CREATE TABLE ステートメントを使用して特定のデータベースに新しいテーブルを作成できることを示します。
変更権限の変更ユーザーに、ALTER TABLE ステートメントを使用して特定のデータベース内のすべてのデータ テーブルを変更する権限が付与されていることを示します。
ビューを表示表示権限を表示特定のデータベース内の既存のビューのビュー定義を表示する権限がユーザーに付与されていることを示します。
ルーチンを作成するルーチン権限の作成ユーザーに特定のデータベースのストアド プロシージャとストアド関数を作成する権限が付与されていることを示します。
ルーチンの変更ルーチン権限の変更ユーザーに、データベース内の既存のストアド プロシージャとストアド関数を更新および削除する権限が付与されていることを示します。
索引インデックス_priv特定のデータベース内のすべてのテーブルのインデックスを定義および削除する権限がユーザーに付与されていることを示します。
落とすドロップ_privユーザーに特定のデータベース内のすべてのテーブルとビューを削除する権限が付与されていることを示します。
一時テーブルの作成_tmp_table_priv を作成するユーザーに特定のデータベースに一時テーブルを作成する権限が付与されていることを示します。
ビューを作成作成_view_privユーザーに特定のデータベースに新しいビューを作成する権限が付与されていることを示します。
ルーチンの実行実行権限ユーザーに特定のデータベースのストアド プロシージャおよびストアド関数を呼び出す権限が付与されていることを示します。
ロックテーブルロックテーブル特権ユーザーに特定のデータベース内の既存のデータ テーブルをロックする権限が付与されていることを示します。
ALL または ALL PRIVILEGES または SUPERスーパー特権上記のすべての権限/スーパー権限を示します

2) テーブル権限を付与する場合、<権限タイプ> を次の値として指定できます。

権限名ユーザーテーブルのフィールドに対応する例示する
選択選択_priv SELECT ステートメントを使用して特定のテーブルにアクセスする権限をユーザーに付与します。
入れる挿入_privユーザーに、INSERT ステートメントを使用して特定のテーブルにデータ行を追加する権限を付与します。
消去削除権限特定のテーブルから行を削除するために DELETE ステートメントを使用する権限をユーザーに付与します。
落とすドロップ_privユーザーにテーブルを削除する権限を与える
アップデート更新_priv UPDATE文を使用して特定のテーブルを更新する権限をユーザーに付与します。
変更権限の変更ALTER TABLE ステートメントを使用してテーブルを変更する権限をユーザーに付与します。
参考文献参照_priv特定のテーブルを参照する外部キーを作成する権限をユーザーに付与します。
作成する作成_priv特定の名前のテーブルを作成する権限をユーザーに付与します。
索引インデックス_privユーザーにテーブルにインデックスを定義する権限を付与します。
ALL または ALL PRIVILEGES または SUPERスーパー特権すべての権限名

3) 列権限を付与する場合、<権限タイプ> の値は SELECT、INSERT、UPDATE のみ指定でき、権限の後に列名リスト column-list を追加する必要があります。

4) 最も効率的な権限はユーザー権限です。
ユーザー権限を付与する場合、<権限タイプ> は、データベース権限を付与するときに指定したすべての値に加えて、次のいずれかの値にすることができます。

  • CREATE USER: ユーザーに新しいユーザーを作成および削除する権限を付与します。
  • SHOW DATABASES: ユーザーに、SHOW DATABASES ステートメントを使用して既存のすべてのデータベースの定義を表示する権限を付与します。

例1

GRANT ステートメントを使用して、パスワードが testPwd の新しいユーザー testUser を作成します。ユーザー testUser には、すべてのデータに対するクエリおよび挿入権限があり、GRANT 権限が付与されています。 SQL文と実行プロセスは以下のとおりです。

mysql> GRANT SELECT、INSERT ON *.*
    -> 宛先 'testUser'@'localhost'
    -> 'testPwd' によって識別されます
    -> GRANT オプション付き;
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.05 秒)

以下に示すように、SHOW GRANTS ステートメントを使用して、ユーザー testUser の権限を照会します。

mysql> 'testUser'@'localhost' の権限を表示します。
+--------------------------------------------------------------------------+
| testUser@localhost への権限付与 |
+--------------------------------------------------------------------------+
| GRANT オプション付きで 'testUser'@'localhost' に *.* の SELECT、INSERT 権限を付与 |
+--------------------------------------------------------------------------+
セット内の 1 行 (0.00 秒)

結果は、testUser がすべてのデータベース内のすべてのテーブルに対してクエリおよび挿入権限を持ち、これらの権限を他のユーザーに付与できることを示しています。

拡大する

データベース管理者は、一般ユーザーを認証する際には特に注意する必要があります。不適切な認証は、データベースに致命的な損傷を与える可能性があります。ユーザーの権限が多すぎることが判明した場合は、REVOKE ステートメントを使用してできるだけ早く権限を取り消す必要があります。通常のユーザーには SUPER 権限と GRANT 権限を付与しないことをお勧めします。ユーザー権限の削除の詳細については、「MySQL REVOKE: ユーザー権限の削除」を参照してください。

これで、MySQL GRANT ユーザー認証の実装に関するこの記事は終了です。MySQL GRANT ユーザー認証に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL コピーテーブルと許可分析の 3 つの実装方法
  • MySQLの認証コマンドgrantの使い方
  • MySQL で権限を付与および取り消す方法の簡単な説明
  • メモを作成するためのMySQL権限管理付与コマンド
  • MySQL Grantコマンドの詳細な説明
  • MySQL の付与に関する注意事項

<<:  HTML における br と br/ の違い

>>:  JavaScript の setTimeout() の使用法の概要

推薦する

vue3で注意すべき2つのポイントを詳しく解説:セットアップ

目次vue2の場合vue3ではセットアップに関する注意事項セットアップライフサイクルは、before...

MySQL外部キーの基本的な機能と使用方法の詳細な説明

この記事では、例を使用して、MySQL 外部キーの基本的な機能と使用方法を説明します。ご参考までに、...

ウェブページの読み込み進捗状況バーの詳細な説明(推奨)

(Web ページの読み込み中に、コンテンツが多すぎて読み込みと待機が続くことがあります。このとき、...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

システムメンテナンスページにリダイレクトするように nginx を設定する

先週末、兄弟プロジェクトはより良いサービスを提供するためにサーバーを拡張する準備をしていました。兄弟...

JavaScript イベント委任の原則

目次1. イベント委任とは何ですか? 2. イベント委任の原則3. イベント委託の役割1. イベント...

さまざまなマウスの形状を表現する方法

<a href = "http://" style = "cur...

CSS 使用のヒントのまとめ

最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...

IE7でソースファイルを含むページを開くとページが空白になる問題の解決方法

質問:私のブログのエンコーディングは utf-8 です。ページを開くと空白になっていることもあります...

SQL重複排除方法の概要

SQL を使用してデータを抽出する場合、テーブル内で重複した値に遭遇することがよくあります。たとえ...

高性能なウェブサイトのための14のテクニック

オリジナル: http://developer.yahoo.com/performance/rule...

Vueは透かし効果を簡単に実現します

序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...

フロントエンドの HTML 知識ポイントのまとめ (推奨)

1. HTMLの概要htyper テキスト マークアップ言語 ハイパーテキスト マークアップ言語ハ...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...