ホームページ  >  記事  >  mysqlデータベースの権限テーブルとは何ですか?

mysqlデータベースの権限テーブルとは何ですか?

百草
百草オリジナル
2023-06-15 09:27:072905ブラウズ

MySQL データベース権限テーブルには次のものが含まれます: 1. ユーザー テーブル、サーバーへの接続を許可されたアカウント情報を記録するために使用されます。このテーブルで有効になっているすべての権限はグローバル レベルであり、すべてのデータベースに適用されます。2. db テーブル、ストア特定のデータベースに対するユーザーの操作権限、3. tables_priv テーブル、単一テーブルの権限の設定に使用、4. columns_priv テーブル、単一データ列の権限の設定に使用、5. procs_priv テーブル、ストレージ プロシージャおよびストアド ファンクションに使用権限を設定します。

mysqlデータベースの権限テーブルとは何ですか?

このチュートリアルのオペレーティング システム: Windows 10 システム、mysql バージョン 8.0、Dell G3 コンピューター。

MySQL データベースでは、権限テーブルには user テーブル、db テーブル、tables_priv テーブル、columns_priv テーブル、および procs_priv テーブルが含まれます。

1. ユーザー権限テーブル

ユーザー テーブルは MySQL で最も重要な権限テーブルであり、接続を許可されているアカウント情報を記録するために使用されます。サーバ。ユーザー テーブルで有効になっているすべての権限はグローバルであり、すべてのデータベースに適用されることに注意してください。

ユーザー テーブルのフィールドは、ユーザー列、権限列、セキュリティ列、リソース制御列の 4 つのカテゴリに大別できます。

ユーザー列

ユーザー列には、ユーザーが MySQL データベースに接続するときに入力する必要がある情報が保存されます。 MySQL 5.7 バージョンではパスワード フィールドとして Password が使用されなくなり、authentication_string に変更されたことに注意してください。

権限列

権限列のフィールドはユーザーの権限を決定し、グローバル スコープ内のデータおよびデータベースに対して許可される操作を記述するために使用されます。

権限は、高度な管理権限と通常の権限の 2 つのカテゴリに大別されます。

  • 高度な管理権限は、サービスを閉じる権限など、主にデータベースを管理します。スーパー権限と読み込みユーザーなど;

  • 通常の権限は、クエリ権限、変更権限など、主にデータベースを操作します。

ユーザー テーブルの権限列には、Select_priv、Insert_priv、および priv で終わるその他のフィールドが含まれます。これらのフィールド値のデータ型は ENUM です。使用可能な値は次のとおりです。 Y および N: Y はユーザーを表します。対応する権限が存在します。N は、ユーザーが対応する権限を持っていないことを意味します。セキュリティ上の理由から、これらのフィールドのデフォルト値は N です。

権限を変更する場合は、GRANT ステートメントを使用してユーザーに一部の権限を付与するか、UPDATE ステートメントでユーザー テーブルを更新して権限を設定できます。

セキュリティ列

セキュリティ列は主に、ユーザーが正常にログインできるかどうかを判断するために使用されます。ユーザー テーブルのセキュリティ列は次の表に示すとおりです。

#SSL 標準暗号化セキュリティ フィールドのサポートssl_cipherblobNOSSL 標準暗号化セキュリティ フィールドのサポートx509_issuerblobNOx509 標準フィールドのサポートx509_subjectblobNOサポート x509 標準フィールドpluginchar(64)NOmysql_native_passwordユーザー接続時のパスワード検証用プラグインの導入、プラグインは外部/プロキシ ユーザーを作成しますpassword_expiredenum('N','Y') NONパスワードの有効期限が切れているかどうか (N は期限切れではない、y は期限切れである)password_last_changedtimestampYESpassword_lifetimeaccount_locked

注:password_expired が「Y」の場合でも、ユーザーはそのパスワードを使用して MySQL にログインできますが、操作は許可されません。

通常、標準ディストリビューションは ssl をサポートしていません。読者は SHOW VARIABLES LIKE "have_openssl" ステートメントを使用して、ssl 機能があるかどうかを確認できます。 have_openssl の値が DISABLED の場合、SSL 暗号化機能はサポートされません。

リソース制御列

リソース制御列のフィールドは、ユーザーが使用するリソースを制限するために使用されます。ユーザー テーブルのリソース制御列を表 4 に示します。

ユーザー テーブルのセキュリティ列
フィールド名 フィールド タイプ 空かどうか デフォルト値 説明
ssl_type enum('','ANY','X509','SPECIFIED') いいえ




##パスワードが最後に変更された時刻を記録します
smallint (5) unsigned YES
パスワードの有効期間を日数で設定します
enum('N','Y') NO N ユーザーがロックされているかどうか (Y はロックされている、N はロックされていない) )
ユーザーテーブルのリソース制御カラム
フィールド名 フィールドタイプ 空かどうか デフォルト値 説明
max_questions int(11) unsigned NO 0 1 時間あたりに許可されるクエリ操作の数を指定します
max_updates int(11) unsigned NO 0 1 時間あたりに許可される更新操作の数を指定します
max_connections int(11) unsigned NO 0 1 時間あたりに許可される接続操作の数を指定します
max_user_connections int(11) unsigned NO 0 同時に確立できる接続の数を指定します

上記のフィールドのデフォルト値は 0 で、制限がないことを示します。ユーザーのクエリまたは接続の数が 1 時間以内にリソース制御の制限を超えると、ユーザーはロックされ、次の 1 時間までここで対応する操作を実行できなくなります。これらのフィールドの値は、GRANT ステートメントを使用して更新できます。

2. db テーブル

db テーブルは一般的に使用され、MySQL データベースの非常に重要な権限テーブルです。このテーブルには、特定のユーザーの操作権限が保存されます。データベース。テーブル内のフィールドは、ユーザー列と権限列の 2 つのカテゴリに大別できます。

ユーザー列

db テーブルのユーザー列には、Host、User、Db の 3 つのフィールドがあり、特定のホストから特定のデータベースに接続するためのユーザーの操作権限を識別します。これら 3 つのフィールド フィールドの組み合わせが db テーブルの主キーを構成します。

db テーブルのユーザー リストは次の表のとおりです。

#ホスト名Db##char(64) #なしデータベース名ユーザーchar(32)NOなしユーザー名

権限列

db テーブルの権限列は、user テーブルの権限列とほぼ同じですが、user テーブルの権限はすべてのデータベースに対するものであるのに対し、db テーブルの権限は指定されたデータベースのみ。ユーザーに特定のデータベースに対する操作権限のみを付与したい場合は、まず user テーブルの対応する権限を N に設定し、次に db テーブルの対応するデータベースの操作権限を設定します。

3. tables_priv テーブル

tables_priv テーブルは、単一のテーブルに対する権限を設定するために使用されます。tables_priv テーブルの構造は、次の表に示すとおりです。

フィールド名 フィールド タイプ 空ですか? デフォルト値 説明
ホスト char(60) NO なし
##NO
フィールド名 フィールドの種類 空かどうか デフォルト値 説明
ホスト char(60) NO なし ホスト
Db char(64) NO None データベース名
ユーザー char(32) NO None ユーザー名
テーブル名 char (64) NO なし テーブル名
付与者 char(93) NO なし このレコードを変更したユーザー
タイムスタンプ タイムスタンプ NO CURRENT_TIMESTAMP レコードを変更する時間
Table_priv set('Select','Insert','Update ' ,'削除','
作成','ドロップ','許可','参照',
'インデックス','変更','ビューの作成','ビューの表示','トリガー')
NO None 選択、挿入、更新、削除、作成、削除、付与、参照、インデックス、変更などのテーブルに対する操作権限を示します。 .
Column_priv set('選択','挿入','更新','参照') NO なし 選択、挿入、更新、参照など、テーブル内の列に対する操作権限を示します

4. columns_priv テーブル

columns_priv テーブルは、単一のデータ列 に対する権限を設定するために使用されます。 columns_priv テーブル構造は次の表に示すとおりです。

フィールド名 フィールド タイプ 空かどうか デフォルト値 説明
Host char(60) NO No ホスト
Db char(64) NO None データベース名
ユーザー char(32) NO なし ユーザー名
Table_name char(64) NO None テーブル名
Column_name char(64) NO None どのデータ列に操作権限があるかを指定するために使用されるデータ列名
タイムスタンプ タイムスタンプ NO CURRENT_TIMESTAMP このレコードの時刻を変更します
Column_priv set('Select','Insert','Update','References') NO None を示します。表の列 操作権限 (選択、挿入、更新、参照を含む)
#

5. procs_priv テーブル

procs_priv テーブルでは、ストアド プロシージャとストアド関数に対する権限を設定できます。procs_priv のテーブル構造は次の表のとおりです。

#char(60)#ホスト名Dbchar(64)NONoneデータベース名char(32) char(64) enum('FUNCTION','PROCEDURE') ストアド プロシージャであることを示します。 char(93)set('実行','変更ルーチン','許可')
フィールド名 フィールドの種類 空かどうか デフォルト値 説明
ホスト#NO なし
#ユーザー
NO なし ユーザー名 ルーチン名
NO None ストアド プロシージャまたは関数の名前を示します Routine_type
NO None は、ストアド プロシージャまたは関数のタイプを示します。Routine_type フィールドには 2 つの値があります。 、つまり FUNCTION と PROCEDURE です。 FUNCTION はこれが関数であることを示し、PROCEDURE はこれが
Grantor
NO None このレコードを挿入または変更したユーザー Proc_priv
NO なし は、実行、ルーチン変更、付与などの権限を示します。 # #CURRENT_TIMESTAMP はレコード更新時刻を示します

以上がmysqlデータベースの権限テーブルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。