MySQL 権限システムは、次の 2 つの段階を通じて認証を行います:
接続ユーザーの ID を認証し、正当なユーザーが認証され、違法なユーザーは接続を拒否します。
認証された正規ユーザーに対応する権限を付与すると、ユーザーはこれらの権限の範囲内でデータベースに対して対応する操作を実行できます。
権限アクセスプロセスでは、主に mysql データベースの下の user テーブルと db テーブルが関係します。 user テーブルのデータ構造は次のとおりです。
db テーブルのデータ構造は次のとおりです。
テーブルの説明: ユーザー列、権限列、セキュリティ列、およびリソース制御列が含まれます。最も頻繁に使用されるのはユーザー列と権限列です。権限は通常権限と管理権限に分かれています。 select_priv、insert_priv などの通常の権限ユーザー データベースの操作。管理権限は主に、process_priv、super_priv などのデータベース操作を管理するために使用されます。
ユーザーが接続すると、権限テーブルのアクセスプロセスが行われます:
まず、ユーザーテーブルのホスト、ユーザー、パスワードの3つのフィールドから、接続されたIP、ユーザー名、パスワードがテーブルに存在するかどうかを判断します。 、 の場合は検証に合格し、そうでない場合は接続が拒否されます。
認証に合格したら、権限テーブル user->db->tables->priv->columns_priv の順にデータベース権限を取得します。グローバル権限はローカル権限をカバーします。たとえば、ユーザーがユーザー テーブルの選択権限を持っている場合、そのユーザーはすべてのデータのすべてのテーブルのすべての列に対する選択権限を持ちます。
権限検索の詳細説明: ユーザーが権限認証に合格すると、権限を割り当てるときに、権限は user->db->gt;tables_priv->columns_priv の順序で割り当てられます。つまり、最初に権限を確認します。 table user (ユーザー table の対応する権限が Y の場合)。この時点で、すべてのデータベースに対するユーザーの対応する権限は Y であり、ユーザーの特定のデータベースである N の場合、db、tables_priv、および columns_priv はチェックされなくなります。ユーザーの特定のデータベース権限がデータベースで取得されている場合、権限が Y の場合、検索は実行されず、データベースに対応する特定のテーブルの権限が確認されます。それ以外の場合は、columns_priv テーブルがチェックされ、対応する特定の列の権限が確認されます。これは、ユーザーにアクセス許可を与えるときに重要です。
ユーザーを作成するには、grant 構文を使用してユーザー テーブルを作成または直接操作できます。
方法 1:
使用テーブルを直接操作する
insert into user(Host
,User
,Password
) value("127.0.0.1","test",password("51testit"));
方法 2:
CREATE USER 'username'@' の形式host ' IDENTIFIED BY 'password';
eg:CREATE USER 'test'@'127.0.0.1' IDENTIFIED BY '51testit';
作成後、次のようにログインします:
MySQL暗号化方式: 16が生成されます。 MYSQL323 暗号化ビット文字列であり、MySQLSHA1 に残っているのは 41 ビット文字列ですが、その は実際の暗号操作には追加されていません。観察すると、多くのユーザーが "" を保持しており、"*" は実際のクラッキング中に削除されます。つまり、MySQLSHA1 によって暗号化されるパスワードの実際の桁数は 40 桁になります。
Host フィールドの説明
Host 値には、ホスト名または IP 番号、または locahost はローカル ホストを表します。
ホスト列の値の前にワイルドカード文字「%」と「_」を使用できます。「%」は、空のホスト値が「%」と一致することを意味します。たとえば、「%.myweb.com」は、すべての mysql.com ドメインのすべてのホストに一致します。ケースは次のとおりです:
Host | User | parsing |
---|---|---|
myweb.wang | pps | pps、myweb.wang |
% | pps | pps、任意のホストから接続 |
” | 任意のユーザー、任意のホストから接続 | |
pps | pps、122.164.35.127から接続 | |
pps | pps、122.164.35 上の任意のホストから接続します |
| 権限レベル
| 永続的な説明の制限
|
データベース、テーブル、またはインデックス |
データベース、テーブル、またはインデックスの作成権限 |
DROP |
データベースまたはテーブル |
データベースまたはテーブルの権限を削除する |
許可オプション |
データベース、テーブル、または保存されたプログラム |
許可オプションの許可 |
参照 |
|
|
変更 |
テーブル |
フィールドやインデックスなどの追加など、テーブルを変更します |
DELETE |
テーブル |
データ権限を削除します | インデックス |
テーブル |
インデックス権限 |
INSERT |
テーブル |
INSERT権限 |
| SELECT
テーブル |
クエリ権限 |
更新 |
表 |
権限を更新 |
|
ビューを作成 |
表示 |
ビュー権限を作成 |
ビューを表示 | 閲覧 |
閲覧閲覧許可 |
ALTER ROUTINE | EXECUTE |
ストアドプロシージャ |
FILE |
サーバーホストへのアクセス |
|
一時テーブルの作成 |
サーバー管理 |
|
ロックテーブル |
サーバー管理 |
|
ユーザーの作成 | サーバー管理 |
|
プロセス |
サーバー管理 |
|
リロード |
||
| フラッシュホスト、フラッシュログ、フラッシュ権限、フラッシュステータス、フラッシュテーブル、フラッシュスレッド、リフレッシュ、リロード、その他のコマンドを実行しますレプリケーションクライアント |
|
権限のコピー |
REP LICATION SLAVE |
サーバー管理 |
データベースの表示 |
サーバー管理 |
|
シャットダウン |
サーバー管理 |
|
SUPER |
サーバー管理 |
|
|
MYSQLの権限の仕組みテーブルにどのような権限を設定できるか、列にどのような権限を設定できるかが分散されています。 どのような権限などは公式ドキュメントの表から説明できます: | |
設定可能な権限 | テーブル権限 |
列の権限
プロセス権限 |
|