Mysql 権限: 1. グローバル権限、サーバー内のすべてのデータベースに適用され、「mysql.user」に保存されます; 2. データベース権限、データベース内のすべてのターゲットに適用され、「mysql.db」に保存されますおよび「mysql.host」; 3. テーブルの権限 (テーブル内のすべての列に適用されます); 4. 列の権限など。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
権限の特定の分類
1. グローバル レベル
グローバル権限は、特定の権限に適用されます。内のすべてのデータベースをサーバー化します。これらの権限は mysql.user テーブルに保存されます。 GRANT ALL ON *.* および REVOKE ALL ON *.* は、グローバル権限の付与と取り消しのみを行います。
2. データベース レベル
データベース権限は、特定のデータベース内のすべてのターゲットに適用されます。これらの権限は、mysql.db テーブルと mysql.host テーブルに保存されます。 GRANT ALL ON db_name.* および REVOKE ALL ON db_name.* は、データベース権限の付与と取り消しのみを行います。
3. テーブル レベル
テーブル権限は、特定のテーブル内のすべての列に適用されます。これらの権限は mysql.tables_priv テーブルに保存されます。 GRANT ALL ON db_name.tbl_name および REVOKE ALL ON db_name.tbl_name は、テーブル権限の付与と取り消しのみを行います。
4. 列レベル
列権限は、特定のテーブル内の単一の列に適用されます。これらの権限は mysql.columns_priv テーブルに保存されます。 REVOKE を使用する場合は、許可された列と同じ列を指定する必要があります。
5. サブプログラム レベル
CREATE ROUTINE、ALTER ROUTINE、EXECUTE、および GRANT 権限は、保存されたサブプログラムに適用されます。これらの権限は、グローバル レベルおよびデータベース レベルで付与できます。さらに、CREATE ROUTINE に加えて、これらの権限をサブルーチン レベルで付与し、mysql.procs_priv テーブルに保存することができます。
追加の知識:
1 、グローバル レベルのテスト
テスト アカウント テストを作成し、グローバル レベルの権限を付与します。以下に示すように:
mysql> set global validate_password_policy=0; mysql> grant select,insert on *.* to test@'%' identified by 'test'; mysql> flush privileges;
次の 2 つのメソッドを使用して、テストに付与されたアクセス許可をクエリします。以下に示すように:
mysql> show grants for test; mysql> select * from mysql.user where user='test'G;
2. データベース レベルのテスト
テスト アカウント テストを作成し、データベース レベルの権限を付与します。以下に示すように:
mysql> drop user test; mysql> grant select,insert,update,delete on jpcpdb.* to test@'%' identified by 'test@123'; mysql> select * from mysql.user where user='test'G; --可以看到无任何授权。 mysql> show grants for test; mysql> select * from mysql.db where user='test'G;
3. テーブルレベルのテスト
テスト アカウント テストを作成し、それを付与します。テーブルレベルの権限。以下に示すように:
mysql> drop user test; mysql> flush privileges; mysql> grant all on jpcpdb.user to test@'%' identified by 'test@123'; mysql> show grants for test; mysql> select * from mysql.tables_privG;
4. 列レベルのテスト
テスト アカウント テストを作成し、列レベルの権限を付与します。以下に示すように:
mysql> drop user test; mysql> flush privileges; mysql> grant select (id, name) on jpcpdb.user to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> select * from mysql.columns_priv; mysql> show grants for test;
5. サブプログラム レベルのテスト
テスト アカウント テストを作成し、サブプログラム レベルの権限を付与します。以下に示すように:
mysql> DROP PROCEDURE IF EXISTS PRC_TEST; mysql> DELIMITER // mysql> CREATE PROCEDURE PRC_TEST() -> BEGIN -> SELECT * FROM user; -> END // mysql> DELIMITER ; mysql> grant execute on procedure jpcpdb.PRC_TEST to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> show grants for test;
mysql> select * from mysql.procs_priv where User='test';
summary
付与された権限を表示する必要がある場合ユーザーに対して、これら 5 つのレベルから付与された権限を表示する必要があります。各レベルで付与されている権限を上から下、または小さいものから上に 1 つずつ確認します。
データベースは、ユニットまたはアプリケーション分野のための一般的なデータ処理システムであり、企業、事業部門、グループ、個人に属する関連データのコレクションを保存します。データベース内のデータは、グローバルな観点から確立され、特定のデータ モデルに従って編成、記述、保存されます。その構造は、必要なすべてのアクセス パスを提供できるデータ間の自然な接続に基づいており、データは特定のアプリケーションを対象とするのではなく、組織全体を対象としており、全体的な構造特性を備えています。
推奨学習: mysql ビデオ チュートリアル
以上がmysqlにはどのような権限があるのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。