MySQLストレージエンジン、データベース構築、権限管理

目次

I.はじめに

1. MySQL の概要

2. ストレージエンジン

1. ストレージ エンジンとは

         2. 一般的なストレージ エンジン

2.1.InnoDB (MySQL デフォルト エンジン)

2.1.1. 4 つの分離レベル

2.2. MyISAM ストレージ エンジン

2.3. メモリストレージエンジン

3. ACIDトランザクション

3、CRUD操作

1. データを挿入する

2. データのクエリ

3. データを変更する

4. データの削除

4. データベース

1. デフォルトのデータベースの概要

2. データベースを作成する

3. ライブラリを見る

4. ライブラリの削除

5. ユーザー

0. 序文

1. ユーザーを作成する

パスワードを変更する

2. ユーザーを表示する

3. ユーザーの権限付与

4. ユーザーの権利を取り戻す

5. ユーザー権限の表示

6. ユーザーの削除



I.はじめに

1. MySQL の概要

MySQL は、Web アプリケーションの開発とデータ ストレージに広く使用されているオープン ソースのリレーショナル データベース管理システム (RDBMS) です。MySQL についての詳細は次のとおりです。

                1. リレーショナル データベース管理システム: MySQL は、テーブルを使用してデータを編成および保存するリレーショナル データベース管理システムです。SQL (Structured Query Language) を使用したデータ管理とクエリをサポートします。

                2. オープンソースと無料: MySQL はオープンソース ソフトウェアであり、コードは無料で入手して使用できます。そのため、開発者と企業の両方にとって非常に人気のある選択肢の 1 つとなっています。

                3. クロスプラットフォームのサポート: MySQL は、Windows、Linux、macOS などの複数のオペレーティング システム上で実行できます。これにより、非常に柔軟でさまざまな環境に適応できます。

                4. 高いパフォーマンスとスケーラビリティ: MySQL は高いパフォーマンスで知られており、多数の同時アクセス要求を処理できます。同時処理とマルチスレッドをサポートしており、大規模なデータセットや高トラフィックのアプリケーションに簡単に拡張できます。

                5. セキュリティ: MySQL は、ユーザー認証、権限管理、データ暗号化などのさまざまなセキュリティ機能を提供します。不正アクセスや悪意のある攻撃からデータを保護します。

                6. データの整合性: MySQL は、データの整合性と一貫性を確保するために、主キー、一意制約、外部キーなどのさまざまな制約をサポートします。

                7. バックアップとリカバリ: MySQL は、データベースを定期的にバックアップし、必要に応じてデータを簡単に復元できるバックアップおよびリカバリ ツールを提供します。

                8. 複数のストレージ エンジン: MySQL は、InnoDB、MyISAM などの複数のストレージ エンジンをサポートします。各ストレージ エンジンには異なる機能と利点があり、アプリケーションのニーズに応じて適切なストレージ エンジンを選択できます。

                9. レプリケーションと高可用性のサポート: MySQL はマスター/スレーブ レプリケーションとクラスター テクノロジーをサポートしており、データ レプリケーションと高可用性を実現し、システムの信頼性と可用性を向上させることができます。

                10. カスタマイズ性: MySQL は、ユーザーがニーズに応じてカスタマイズできるモジュール式システムです。豊富なプラグインと拡張メカニズムを提供し、開発者が必要に応じて新しい機能を追加できるようにします。

つまり、MySQL は、あらゆるサイズと種類のアプリケーションに対応する、強力で高性能、信頼性が高く安全なリレーショナル データベース管理システムです。Web 開発とデータ ストレージの分野で広く使用され、認知されています。

2. ストレージエンジン

1. ストレージ エンジンとは

データベース ストレージ エンジンはデータベースの基礎となるソフトウェア組織であり、データベース管理システム (DBMS) はデータ エンジンを使用してデータの作成、クエリ、更新、削除を行います。ストレージ エンジンが異なれば、ストレージ メカニズム、インデックス作成手法、ロック レベル、その他の機能も異なります。また、ストレージ エンジンが異なると、特定の機能を取得することもできます。現在、さまざまなデータベース管理システムがさまざまなデータ エンジンをサポートしています。MySQL の中核はストレージ エンジンです

MySQL は、トランザクション セーフなテーブルを処理するものや、トランザクション セーフでないテーブルを処理するものなど、いくつかの異なるストレージ エンジンを提供します。MySQL では、サーバー全体で同じストレージ エンジンを使用する必要はなく、特定の要件に応じてテーブルごとに異なるストレージ エンジンを使用できます。

MySQL 8.0 は複数のストレージ エンジンをサポートしています。一般的なストレージ エンジンのいくつかを以下に示します

  1. InnoDB : デフォルトのストレージ エンジンで、トランザクション処理と行レベルのロックをサポートし、優れたデータ整合性と同時実行パフォーマンスを備えています。

  2. MyISAM : 最も一般的に使用される非トランザクション ストレージ エンジンで、読み取りが頻繁で書き込みがほとんどないアプリケーション シナリオに適しています。

  3. メモリ: ヒープとも呼ばれ、データをメモリに保存し、高速な読み取りおよび書き込み操作を必要とする一時データまたはキャッシュに適しています。トランザクションと永続化はサポートされていません。

  4. NDB Cluster : 高可用性および分散アプリケーションに適しており、複数のサーバーにデータを分散する機能を提供します。

さらに、MySQL 8.0 は、アーカイブ、CSV、ブラックホールなどの他のストレージ エンジンもサポートしています。各ストレージ エンジンには異なる特性と適用可能なシナリオがあり、ストレージ エンジンを選択する際には、データ アクセス パターン、要件、パフォーマンス要件などの要素を考慮する必要があります。デフォルトでは、InnoDB ストレージ エンジンが推奨されますが、具体的な選択は実際のニーズに基づいて評価して決定する必要があります。

2. 一般的なストレージ エンジン

2.1.InnoDB (MySQL デフォルト エンジン)

InnoDB は、データベース ACID トランザクションのサポートを提供するトランザクション ストレージ エンジンであり、行レベルのロックを備えたSQL 標準の4 つの分離レベルを実装しています(これは、ロックの粒度が小さく、全体をロックする必要がないことを示しています)テーブルをサポートするため、高い同時実行性に適しています) および外部キーのサポート (すべてのデータベース エンジンの中で唯一、外部キーのみをサポートします) このエンジンの設計目標は、大容量のデータ データベース システムを処理することです。データとインデックスをキャッシュするためにメモリ内に保存されます。

InnoDB はトランザクション データベースに最適なエンジンであり、トランザクション セーフ テーブル (ACID) をサポートし、行ロックと外部キーをサポートします。InnoDB はデフォルトの MySQL エンジンです

チップ:

行ロック (行ロック):テーブル全体やその他のより大きな粒度をロックするのではなく、データベース内の個々のデータ行をロックすることを指します。行ロックがデータ行に適用されると、ロックを保持しているトランザクションがロックを解放するまで、他のトランザクションはデータ行を変更または削除できません

行ロックの主な利点は、同時実行パフォーマンスが向上し、よりきめ細かいロック制御が提供できることです。複数のトランザクションは、互いにブロックすることなく、データの異なる行に同時にアクセスできますこれは、同時読み取りおよび書き込み操作が頻繁に行われるデータベース環境にとって非常に重要です。

2.1.1. 4 つの分離レベル

1. Read Uncommitted (Read Uncommitted) : この分離レベルでは、すべてのトランザクションが他のコミットされていないトランザクションの実行結果を確認できます。この分離レベルは他のレベルと比べてパフォーマンスがあまり優れていないため、実際のアプリケーションではほとんど使用されません。コミットされていないデータの読み取り。ダーティ リード (ダーティ リード) とも呼ばれます。

2. Read Committed (Read Committed) : これは、ほとんどのデータベース システムのデフォルトの分離レベルです (ただし、MySQL のデフォルトではありません)。これは、分離の単純な定義を満たします。トランザクションは、コミットされたトランザクションによって行われた変更のみを確認できます。この分離レベルは、いわゆる非反復読み取り (NonrepeatableRead) もサポートしています。これは、同じトランザクションの他のインスタンスがこのインスタンスの処理中に新しいコミットを持つ可能性があるため、同じ選択が異なる結果を返す可能性があるためです。

3. 反復可能読み取り (Repeatable Read) : これは MySQL のデフォルトのトランザクション分離レベルであり、同じトランザクションの複数のインスタンスが同時にデータを読み取る場合、同じデータが表示されます。しかし、理論的には、これはファントム リード (ファントム リード) という別のやっかいな問題につながることになります。簡単に言えば、ファントム読み取りとは、ユーザーがデータ行の範囲を読み取るときに、別のトランザクションがその範囲に新しい行を挿入することを意味します。ユーザーがデータ行の範囲を再度読み取ると、新しい「ファントム」行があることがわかります。

4. Serializable (Serializable) : これは最も高い分離レベルであり、トランザクションが互いに競合しないように強制的にソートすることでファントム読み取りの問題を解決します。つまり、読み取られた各データ行に共有ロックが追加されます。このレベルでは、多数のタイムアウトとロック競合が発生する可能性があります。

分離レベル ダーティリード 反復不可能な読み取り ファントムリーディング
コミットされていない読み取り 可能 可能 可能
コミットされた読み取り 不可能 可能 可能
反復可能な読み取り 不可能 不可能 可能
シリアル化可能 不可能 不可能 不可能

チップ:

ダーティ リード、ノンリピータブル リード、ファントム リードとは何ですか?

  • ダーティリード

ダーティ リードとは、トランザクションがデータにアクセスしてデータを変更しているが、この変更がデータベースに送信されていないとき、この時点で別のトランザクションもデータにアクセスし、そのデータを使用することを意味します。

T2でトランザクションBがZhang Sanのスコアの元データを80から70に変更し、T3でトランザクションAで読み込んだが、T4でトランザクションBが異常となり、ロールバック操作が行われた。このプロセスでは、70 個のダーティ データを呼び出し、トランザクション A がダーティ リードを実行しました。

  • 反復不可能な読み取り

非反復読み取り。「読み取りコミット」とも呼ばれます。これはどういう意味ですか。つまり、トランザクション内で同じデータが複数回読み取られますが、異なる結果が返されます。実際には、トランザクション間隔でデータを読み取っている間に、他のトランザクションがこのデータを変更してコミットしており、再現不可能な読み取り事故が発生するためです。

図では、トランザクション A が T1 と T4 で同じステートメントをクエリしますが、異なる結果が得られますが、これはトランザクション B が T2 ~ T3 でデータを変更して送信するためです。このプロセスでは、1 つのトランザクションで 2 回読み取られるデータが異なります。これをノンリピータブル リードと呼びます。

ノンリピータブルリードダーティリードの違い:前者は「リードコミット」、後者は「リードアンコミット」

  • ファントムリーディング

ファントム読み取りとは、トランザクションが独立して実行されず、現在別のトランザクションの影響を受けているデータを挿入または削除するときに発生する幻覚のような現象を指します。たとえば、あるトランザクションでテーブル内のデータ数を確認したところ10件だったが、しばらくすると11件になったファントムリードが発生し、前回の検出で得られたデータが錯覚してしまうような現象が発生します。ファントム リードとノンリピータブル リードの原因は非常に似ており、データが複数回操作されると、結果が元の結果と異なることが判明したり、その他のトランザクション干渉が発生したりします。ただし、ファントム読み取りではデータの追加と削除が主眼であり、データを複数回操作して得られるレコード数が異なりますが、非反復読み取りではデータの変更が主眼であり、データの値が異なることがわかります。データを複数回読み取った後。

トランザクション B がテーブルに新しいデータを挿入します。時刻 T3 の後にトランザクション A がデータをクエリすると、以前にクエリしたときよりもデータ内に項目が 1 つ増えていることに突然気づきました。幻覚のように。

2.2. MyISAM ストレージ エンジン

InnoDB と比較すると、データベース トランザクションのサポートが提供されておらず、詳細なロック (行ロック) や外部キーもサポートされていないため、テーブルの挿入と更新の際にテーブル全体をロックする必要があるため、効率が低くなります。同時実行性が高い可能性があります。ボトルネックが発生しましたが、MyIsam エンジンはオペレーティング システムから独立しており、Windows と Linux で使用できます。ただし、Innodb とは異なり、MyIASM はテーブル内の行数を保存するため、SELECT COUNT(*) FROM TABLE を実行する場合は、テーブル全体のスキャンを実行せずに、保存された値を直接読み取るだけで済みます。テーブルの読み取り操作が書き込み操作よりもはるかに多く、データベース トランザクションのサポートを必要としない場合は、MyIASM も良い選択です。

欠点:

  • テーブルが破損した後はデータを回復できません

該当するシーン:

  • MyIsam は速読を重視します

  • テーブル内の行数は自動的に MyIsam テーブルに保存され、必要なときに直接取得できます。

  • トランザクションのサポートや外部キー関数を必要とせず、テーブル全体のロックが必要な状況に適用されます。

2.3. メモリストレージエンジン

メモリに保存されている内容を含むテーブルを作成します。各 MEMORY テーブルは、実際には 1 つのディスク ファイルにのみ対応します。MEMORY タイプのテーブル アクセスは、データがメモリに配置され、デフォルトで HASH インデックスが使用されるため、非常に高速です。ただし、サービスが終了すると、テーブル内のデータは失われます。HEAP では、メモリ内にのみ存在する一時テーブルが許可されます。HEAP はメモリ上に常駐するため、ISAM や MYISAM よりも高速になりますが、管理するデータは不安定で、シャットダウンする前に保存しないとすべてのデータが失われます。HEAP は、行が削除されたときにも大量のスペースを無駄にしません。HEAP テーブルは、SELECT 式を使用してデータを選択および操作する必要がある場合に便利です。メモリはハッシュ インデックスと B ツリー インデックスを同時にサポートします。B ツリー インデックスは部分クエリとワイルドカード クエリを使用でき、<,> や >= などの演算子もデータ マイニングを容易にするために使用できます。ハッシュ インデックスは等しいです。より速くなりますが、範囲内でははるかに遅くなります。

欠点:

  • 格納する必要があるデータはデータ長が一定の形式であり、Blob型およびText型のデータは使用できません(長さは固定ではありません)

  • テーブルは処理が完了すると削除されます

該当するシーン:

  • 内容が頻繁に変更されないコード テーブル、または統計演算の中間結果テーブルとして、分析用に中間結果を効率的に積み重ねて最終的な統計結果を取得するのに便利です。

  • 対象となるデータは比較的小さく、アクセス頻度が高いためメモリに格納されますが、データが大きすぎるとメモリオーバーフローが発生します。メモリ テーブルのサイズは、パラメータ max_heap_table_size で制御して、メモリ テーブルの最大サイズを制限できます。

  • データは一時的なものであり、メモリに保存できるようにすぐに利用できる必要があります。

  • Memoryテーブルに保存されているデータが突然失われても大丈夫

3. ACIDトランザクション

  1. アトミック性: トランザクションはアトミックな操作単位であり、トランザクション内のデータベースに対する操作は実行されるか実行されません。

  2. 一貫性 (Consistency) : トランザクションの開始前と完了後、データは一貫した状態に保たれ、データベースの整合性が保証されなければなりません。つまり、データはデータベースのルールに準拠する必要があります。

  3. 分離: トランザクションの実行は、他のトランザクションによって干渉されません。つまり、トランザクションによって使用される内部操作とデータは他の同時トランザクションから分離されており、同時に実行されるトランザクションは相互に干渉することができません。

  4. 耐久性: 永続性も永続的になります。つまり、トランザクションがコミットされると、データベース内のデータへの変更は永続的になる必要があります。

3、CRUD操作

1. データを挿入する

作成 (Create) 操作: 作成操作は、新しいデータ レコードをデータベースに追加するために使用されます。MySQL では、INSERT INTO ステートメントを使用してオペレーションを作成できます。

INSERT INTO users (name, email, age) VALUES ('John', '[email protected]', 25);

2. データのクエリ

読み取り (読み取り) 操作: 読み取り操作は、データベースからデータ レコードを取得するために使用されます。MySQL では、読み取り操作に SELECT ステートメントを使用できます。

たとえば、usersテーブルからすべてのレコードを取得するには、次のようにします。

SELECT * FROM users;

あるいは、users特定の条件を満たすテーブルからレコードを取得します。

SELECT * FROM users WHERE age > 18;

3. データを変更する

変更 (更新) 操作: 更新操作は、データベース内の既存のデータ レコードを変更するために使用されます。MySQL では、更新操作に UPDATE ステートメントを使用できます。

たとえば、usersテーブル内のレコードの経過時間を変更するには、次のようにします。

UPDATE users SET age = 30 WHERE id = 1;

4. データの削除

削除操作: 削除操作は、データベースからデータ レコードを削除するために使用されます。MySQL では、DELETE FROM ステートメントを使用して削除できます。

たとえば、users特定の条件を満たすテーブルからレコードを削除するには、次のようにします。

DELETE FROM users WHERE age > 60;

4. データベース

1. デフォルトのデータベースの概要

  • 情報スキーマ

information_schema はデータベースのメタデータへのアクセスを提供します。(メタデータとは、データベースやテーブルの名前、列のデータ型、アクセス許可など、データに関するデータです。この情報を説明するために時々使用される他の用語には、「データ ディクショナリ」や「システム カタログ」などがあります。) , information_schema は、MySQL サーバーによって維持される他のすべてのデータベースに関する情報を保持する情報データベースです。(データベース名、データベーステーブル、データ型、テーブル列のアクセス権など)

  • mysql

MySQL のコア データベースは、SQL Server のマスター テーブルと同様に、データベース ユーザーやユーザーのアクセス権など、MySQL 自体が使用する必要がある制御および管理情報を格納する役割を主に担っています。mysql データベースのユーザー テーブル内の root ユーザー パスワードの変更などによく使用されます。

  • パフォーマンススキーマ

主にデータベース サーバーのパフォーマンス パラメーターを収集するために使用されます。また、ライブラリ内のテーブルのストレージ エンジンは PERFORMANCE_SCHEMA ですが、ユーザーは PERFORMANCE_SCHEMA のストレージ エンジンを使用してテーブルを作成することはできません。MySQL5.7はデフォルトで有効になっています。

  • システム

MySQL 8.0 のインストールが完了すると、追加の sys データベースが作成されます。sys データベースは主にいくつかのビューを提供し、データはパフォーマンス スキーマから取得され、主に開発者とユーザーがパフォーマンスの問題を簡単に確認できるようにします。

2. データベースを作成する

MySQL では、CREATE DATABASEステートメントを使用してデータベースを作成できます。構文は次のとおりです。

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];

[]内の内容はオプションです。構文は次のように説明されます。

  • <データベース名>: データベースの名前を作成します。MySQL データ ストレージ領域は MySQL データベースをディレクトリ形式で表すため、データベース名はオペレーティング システムのフォルダー命名規則に準拠する必要があり、数字で始めることはできず、できるだけ実用的なものにする必要があります。MySQL では大文字と小文字が区別されないことに注意してください。

  • 存在しない場合: データベースを作成する前に判断して、データベースが現在存在しない場合にのみ操作を実行できます。このオプションを使用すると、既に存在するデータベースの重複作成エラーを回避できます。

  • [デフォルト] CHARACTER SET: データベースの文字セットを指定します。文字セットを指定する目的は、データベースに格納されるデータの文字化けを回避することです。データベースの作成時に文字セットを指定しない場合は、システムのデフォルトの文字セットが使用されます。

  • [DEFAULT] COLLATE: このデータベースのデフォルトの照合順序を指定します。

3. ライブラリを見る

MySQL では、SHOW DATABASESステートメントを使用して、現在のユーザーの権限の範囲内でデータベースを表示または表示できます。データベースを表示するための構文は次のとおりです。

SHOW DATABASES [LIKE '数据库名'];

構文は次のように説明されます。

  • LIKE 句はオプションであり、指定されたデータベース名と一致させるために使用されます。LIKE 句は部分的または完全に一致します。

  • データベース名は一重引用符で囲まれます' '

4. ライブラリの削除

MySQL では、作成したデータベースを削除する必要がある場合、DROP DATABASEステートメントを使用できます。その構文形式は次のとおりです。

DROP DATABASE [ IF EXISTS ] <数据库名>

構文は次のように説明されます。

  • <データベース名>: 削除するデータベース名を指定します。

  • IF EXISTS: データベースが存在しない場合のエラーを防ぐために使用されます。

  • DROP DATABASE: データベース内のすべてのテーブルを削除し、同時にデータベースも削除します。このステートメントを使用する場合は、誤って削除しないように十分注意してください。DROP DATABASE を使用する場合は、データベースの DROP 権限を取得する必要があります。

注: MySQL をインストールすると、システムは information_schema と mysql という名前の 2 つのシステム データベースを自動的に作成します。システム データベースには、データベースに関連する情報が保存されます。これら 2 つのデータベースが削除されると、MySQL は正常に動作しなくなります。

5. ユーザー

0. 序文

MySQL をインストールすると、デフォルトで root という名前のユーザーが作成され、このユーザーはスーパー権限を持ち、MySQL サーバー全体を制御できます。

1. ユーザーを作成する

MySQL では、ユーザーを作成するために次の 3 つの方法が提供されています。

  1. CREATE USER ステートメントを使用してユーザーを作成する

  2. mysql.user テーブルにユーザーを追加する

  3. GRANT ステートメントを使用してユーザーを作成する

  • CREATE USER ステートメントを使用してユーザーを作成する

CREATE USER ステートメントを使用して、MySQL ユーザーを作成し、対応するパスワードを設定できます。その基本的な構文は次のとおりです。

CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]

パラメータは次のように説明されます。

  1. ユーザー: ユーザー アカウントを作成するために指定します。形式は ですuser_name'@'host_nameこれはuser_nameユーザー名host_nameであり、これはホスト名、つまりユーザーが MySQL に接続するために使用するホストの名前です。

  2. IDENTIFIED BY 句: ユーザーのパスワードを指定するために使用されます。新しいユーザーは初期パスワードを持っていない可能性があります。ユーザーがパスワードを設定しない場合、この句は省略できます。

  3. PASSWORD 'password' : PASSWORD は、パスワードの設定にハッシュ値が使用されることを示し、このパラメーターはオプションです。

例:

CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';

チップ:

パスワードを変更する

SET PASSWORD ステートメントを使用すると、他のユーザーのログイン パスワードや自分が使用するアカウントのパスワードをリセットできます。SET ステートメントを使用してパスワードを変更する構文構造は次のとおりです。

SET PASSWORD = PASSWORD ("rootpwd");

2. ユーザーを表示する

#切换数据库
use mysql;
#查询用户信息
select host,user,authentication_string from user;

MySQL 5.7 バージョンでは、パスワード フィールドとして Password が使用されなくなり、authentication_string に変更されました。

ホストパラメータ値の説明:

ホスト列の値 意味
% すべてのホストと一致する
ローカルホスト localhost は IP アドレスに解決されず、UNIXsocket 経由で直接接続されます。
127.0.0.1 TCP/IP プロトコルを介して接続され、ローカルでのみアクセスできます。
::1 ::1 は ipv6 と互換性があります。つまり、127.0.0.1 は ipv4 と同じです。

3. ユーザーの権限付与

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

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]

パラメータの説明:

  • priv_type パラメータは権限のタイプを示します。

  • columns_list パラメータは、権限がどの列に作用するかを示します。このパラメータを省略すると、テーブル全体に作用することを意味します。

  • database.table は、アクセス許可のレベルを指定するために使用されます。

  • user パラメータはユーザー名とホスト名で構成されるユーザー アカウントを表し、形式は「'username'@'hostname'」です。

  • IDENTIFIED BY パラメータは、ユーザーのパスワードを設定するために使用されます。

  • パスワードパラメータはユーザーの新しいパスワードです。

WITH キーワードの後に​​は、1 つ以上の with_option パラメータが続きます。このパラメータには 5 つのオプションがあり、以下で詳しく説明します。

  • オプションの付与: 承認されたユーザーは、これらのアクセス許可を他のユーザーに付与できます。

  • MAX_QUERIES_PER_HOUR カウント: 1 時間あたりのクエリ数を設定します。

  • MAX_UPDATES_PER_HOUR カウント: 1 時間あたりのカウント更新を許可するように設定します。

  • MAX_CONNECTIONS_PER_HOUR カウント: 1 時間あたりの接続数を設定します。

  • MAX_USER_CONNECTIONS 数: 1 人のユーザーが同時に持つことができる接続数を設定します。

例:

GRANT SELECT,INSERT ON *.* TO 'zking'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;

4. ユーザーの権利を取り戻す

ユーザーの特定の権限を削除します。構文は次のとおりです。

REVOKE priv_type [(column_list)]...
ON database.table
FROM user [, user]...

REVOKE ステートメントのパラメーターは、GRANT ステートメントのパラメーターと同じ意味を持ちます。の:

  • priv_type パラメータは権限のタイプを示します。

  • column_list パラメータは、権限がどの列に作用するかを示します。そのようなパラメータがない場合は、テーブル全体に作用します。

  • user パラメータは、「username'@'hostname'」という形式のユーザー名とホスト名で構成されます。

例 1: ユーザーから一部の権限を取り消す

REVOKE INSERT ON *.* FROM 'zking'@'localhost'

例 2: ユーザーからすべての権限を取り消す

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'zking'@'localhost'

5. ユーザー権限の表示

権限を表示するには、SHOW GRANTS FOR ステートメントを使用します。その構文形式は次のとおりです。

SHOW GRANTS FOR 'username'@'hostname';

このうち、usernameはユーザー名を表し、hostnameはホスト名またはホストIPを表します。

例:

SHOW GRANTS FOR 'xw'@'localhost';

6. ユーザーの削除

権限を表示するには、DROP USER ステートメントを使用します。その構文形式は次のとおりです。 

DROP USER 'username'@'host';

ここで、「username」は削除するユーザーのユーザー名、「host」はユーザーを指定するホストです。

たとえば、「john」という名前のユーザーとそれに関連付けられた権限を削除するには、次のコマンドを実行します。

DROP USER 'john'@'localhost';

注:バージョンが異なると文が異なる場合があります。この記事の文はすべて MySQL8.0 に基づいています。

この共有は以上です。役に立ったと思われる場合は、ブロガーに高評価をお願いします。

おすすめ

転載: blog.csdn.net/weixin_74318097/article/details/131548130