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

mysqlの権限テーブルとは何ですか?

青灯夜游
青灯夜游オリジナル
2022-06-27 18:03:159062ブラウズ

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

mysqlの権限テーブルとは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

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

ユーザー権限テーブル

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

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

ユーザー列

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

権限列

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

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

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

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

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

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

セキュリティ列

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

##x509_issuerblobNOx509 標準フィールドのサポートx509_subjectblobNOサポートx509 標準フィールドplugin#char(64)NOmysql_native_password のプラグインの紹介ユーザー接続時のパスワード検証、プラグイン 外部/プロキシ ユーザーの作成password_expiredenum('N','Y')NONパスワードの有効期限が切れているかどうか (N は期限切れではない、y は期限切れである) #password_last_changedpassword_lifetimeaccount_locked

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

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

リソース制御列

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

ユーザー テーブルのセキュリティ列
フィールド名 フィールド タイプ 空かどうか デフォルト値 説明
ssl_type enum('','ANY','X509','SPECIFIED') NO SSL 標準暗号化セキュリティ フィールドをサポート
ssl_cipher blob NO SSL 標準暗号化セキュリティ フィールドをサポート
timestamp YES パスワードが最後に変更された時刻を記録します
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 ステートメントを使用して更新できます。

db テーブル

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

ユーザー列

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

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

#ホスト名Db##char(64) #なしデータベース名ユーザーchar(32)NOなしユーザー名 権限列
フィールド名 フィールド タイプ 空ですか? デフォルト値 説明
ホスト char(60) NO なし
##NO
db テーブルの権限列は、ユーザーの権限列とほぼ同じです。ただし、権限はすべてのデータベースを対象とするのに対し、db テーブルの権限は指定されたデータベースのみを対象とする点が異なります。ユーザーに特定のデータベースに対する操作権限のみを付与したい場合は、まず user テーブルの対応する権限を N に設定し、次に db テーブルの対応するデータベースの操作権限を設定します。

tables_priv テーブルと columns_priv テーブル

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

フィールド名

フィールド タイプ空かどうかデフォルト値 説明ホストchar(60)NOなし HostDbchar(64)NONoneデータベース名ユーザーchar(32)NOなしユーザー名テーブル名char(64)NOなしテーブル名 #Grantorchar(93)NONoneこのレコードを変更したユーザータイムスタンプtimestampNOCURRENT_TIMESTAMPレコードを変更する時刻Table_privset( '選択','挿入','更新','削除','作成','ドロップ','許可','参照','インデックス','変更', 'Create View' 、'Show view'、'Trigger')NO は、テーブルに対する操作権限 (選択、挿入、更新、削除など) を示します。 、作成、ドロップ、付与、参照、インデックスと変更など。Column_privset('Select','Insert','Update','References ')NONone テーブル内の列に対する操作権限 (選択、挿入、更新、参照など) を示します

None
##

columns_priv テーブルの構造は次の表のとおりです。

##ホストchar(60)NOなしホストDbchar(64)NOなしデータベース名ユーザーchar(32)NOなしユーザー名Table_namechar(64)NOなしテーブル名Column_namechar(64)NONoneデータ列名。操作権限を持つデータ列を指定するために使用されますタイムスタンプタイムスタンプNOCURRENT_TIMESTAMPこのレコードの時刻を変更します#Column_priv
フィールド名 フィールドの種類 空ですか デフォルト値 説明
set('選択','挿入','更新','参照') NO なし 「はい」を意味します。テーブル内の列に対する操作権限 (選択、挿入、更新、参照を含む)
##procs_priv table

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

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

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

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