From 70de4075a18c12ed7e55db9a49e66eb6cff308b2 Mon Sep 17 00:00:00 2001 From: Oleg Smirnov Date: Thu, 7 Dec 2023 17:28:45 +0300 Subject: [PATCH] MDEV-24486 Rename the view sys.table_privileges to sys.privileges_by_table_by_level This is a follow-up for the initial MDEV-24486 commit. It renames the view sys.table_privileges to sys.privileges_by_table_by_level and adds some more tests displaying privilege levels GLOBAL and SCHEMA --- mysql-test/main/ctype_upgrade.result | 4 +- mysql-test/main/information_schema.result | 5 +- mysql-test/main/log_tables_upgrade.result | 2 +- mysql-test/main/lowercase_fs_off.result | 2 +- .../main/mysql_json_mysql_upgrade.result | 2 +- ...on_mysql_upgrade_with_plugin_loaded.result | 2 +- mysql-test/main/mysql_upgrade-20228.result | 2 +- mysql-test/main/mysql_upgrade-28915.result | 4 +- mysql-test/main/mysql_upgrade-6984.result | 2 +- mysql-test/main/mysql_upgrade.result | 26 +- .../mysql_upgrade_mysql_json_datatype.result | 2 +- mysql-test/main/mysql_upgrade_ssl.result | 2 +- mysql-test/main/mysql_upgrade_view.result | 6 +- mysql-test/main/upgrade_MDEV-19650.result | 2 +- mysql-test/main/upgrade_MDEV-23102-1.result | 4 +- mysql-test/main/upgrade_MDEV-23102-2.result | 4 +- ...de_geometrycolumn_procedure_definer.result | 2 +- mysql-test/main/upgrade_mdev_24363.result | 2 +- .../sysschema/r/all_sys_objects_exist.result | 2 +- .../r/v_privileges_by_table_by_level.result | 264 ++++++++++++++++++ .../sysschema/r/v_table_privileges.result | 92 ------ .../t/v_privileges_by_table_by_level.test | 54 ++++ .../suite/sysschema/t/v_table_privileges.test | 53 ---- scripts/sys_schema/CMakeLists.txt | 2 +- scripts/sys_schema/NEWS.md | 2 +- scripts/sys_schema/README.md | 9 +- scripts/sys_schema/sys_56.sql | 2 +- scripts/sys_schema/sys_57.sql | 2 +- ...s.sql => privileges_by_table_by_level.sql} | 9 +- scripts/sys_schema/views/version.sql | 2 +- 30 files changed, 370 insertions(+), 198 deletions(-) create mode 100644 mysql-test/suite/sysschema/r/v_privileges_by_table_by_level.result delete mode 100644 mysql-test/suite/sysschema/r/v_table_privileges.result create mode 100644 mysql-test/suite/sysschema/t/v_privileges_by_table_by_level.test delete mode 100644 mysql-test/suite/sysschema/t/v_table_privileges.test rename scripts/sys_schema/views/i_s/{table_privileges.sql => privileges_by_table_by_level.sql} (92%) diff --git a/mysql-test/main/ctype_upgrade.result b/mysql-test/main/ctype_upgrade.result index 05482eb19d4..819ff32da3e 100644 --- a/mysql-test/main/ctype_upgrade.result +++ b/mysql-test/main/ctype_upgrade.result @@ -283,6 +283,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -302,7 +303,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -446,6 +446,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -465,7 +466,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/information_schema.result b/mysql-test/main/information_schema.result index 8e41f6996f6..e436626a2ab 100644 --- a/mysql-test/main/information_schema.result +++ b/mysql-test/main/information_schema.result @@ -140,7 +140,6 @@ TABLES TABLES TABLESPACES TABLESPACES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES -TABLE_PRIVILEGES table_privileges TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS t1 t1 @@ -164,7 +163,6 @@ TABLES TABLES TABLESPACES TABLESPACES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES -TABLE_PRIVILEGES table_privileges TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS t1 t1 @@ -188,7 +186,6 @@ TABLES TABLES TABLESPACES TABLESPACES TABLE_CONSTRAINTS TABLE_CONSTRAINTS TABLE_PRIVILEGES TABLE_PRIVILEGES -TABLE_PRIVILEGES table_privileges TABLE_STATISTICS TABLE_STATISTICS TRIGGERS TRIGGERS t1 t1 @@ -1492,6 +1489,7 @@ memory_by_user_by_current_bytes NO memory_global_by_current_bytes YES memory_global_total NO metrics NO +privileges_by_table_by_level NO processlist NO ps_check_lost_instrumentation YES schema_auto_increment_columns NO @@ -1511,7 +1509,6 @@ statements_with_runtimes_in_95th_percentile YES statements_with_sorting YES statements_with_temp_tables YES statement_analysis YES -table_privileges NO user YES user_summary NO user_summary_by_file_io NO diff --git a/mysql-test/main/log_tables_upgrade.result b/mysql-test/main/log_tables_upgrade.result index 5725add6524..2d36e4fbb90 100644 --- a/mysql-test/main/log_tables_upgrade.result +++ b/mysql-test/main/log_tables_upgrade.result @@ -68,6 +68,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -87,7 +88,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/lowercase_fs_off.result b/mysql-test/main/lowercase_fs_off.result index b29bf0ba386..560458be410 100644 --- a/mysql-test/main/lowercase_fs_off.result +++ b/mysql-test/main/lowercase_fs_off.result @@ -159,6 +159,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -178,7 +179,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_json_mysql_upgrade.result b/mysql-test/main/mysql_json_mysql_upgrade.result index 21a67d4e3d5..05d280d9994 100644 --- a/mysql-test/main/mysql_json_mysql_upgrade.result +++ b/mysql-test/main/mysql_json_mysql_upgrade.result @@ -79,6 +79,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -98,7 +99,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_json_mysql_upgrade_with_plugin_loaded.result b/mysql-test/main/mysql_json_mysql_upgrade_with_plugin_loaded.result index 09e8855c4be..373844db12c 100644 --- a/mysql-test/main/mysql_json_mysql_upgrade_with_plugin_loaded.result +++ b/mysql-test/main/mysql_json_mysql_upgrade_with_plugin_loaded.result @@ -79,6 +79,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -98,7 +99,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade-20228.result b/mysql-test/main/mysql_upgrade-20228.result index d43f26e69b6..96213116010 100644 --- a/mysql-test/main/mysql_upgrade-20228.result +++ b/mysql-test/main/mysql_upgrade-20228.result @@ -72,6 +72,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -91,7 +92,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade-28915.result b/mysql-test/main/mysql_upgrade-28915.result index 422fff4822f..8e5ff2846f5 100644 --- a/mysql-test/main/mysql_upgrade-28915.result +++ b/mysql-test/main/mysql_upgrade-28915.result @@ -130,6 +130,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -149,7 +150,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -395,6 +395,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -414,7 +415,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade-6984.result b/mysql-test/main/mysql_upgrade-6984.result index ff3f017c144..0c5a47c506f 100644 --- a/mysql-test/main/mysql_upgrade-6984.result +++ b/mysql-test/main/mysql_upgrade-6984.result @@ -75,6 +75,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -94,7 +95,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade.result b/mysql-test/main/mysql_upgrade.result index 2af8cd0c36c..1924fe3d0ce 100644 --- a/mysql-test/main/mysql_upgrade.result +++ b/mysql-test/main/mysql_upgrade.result @@ -57,6 +57,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -76,7 +77,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -211,6 +211,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -230,7 +231,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -364,6 +364,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -383,7 +384,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -523,6 +523,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -542,7 +543,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -682,6 +682,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -701,7 +702,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -844,6 +844,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -863,7 +864,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -1046,6 +1046,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -1065,7 +1066,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -1219,6 +1219,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -1238,7 +1239,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -1400,6 +1400,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -1419,7 +1420,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -1623,6 +1623,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -1642,7 +1643,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -1804,6 +1804,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -1823,7 +1824,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -2037,6 +2037,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -2056,7 +2057,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -2258,6 +2258,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -2277,7 +2278,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade_mysql_json_datatype.result b/mysql-test/main/mysql_upgrade_mysql_json_datatype.result index 628619139c4..2ef120222c4 100644 --- a/mysql-test/main/mysql_upgrade_mysql_json_datatype.result +++ b/mysql-test/main/mysql_upgrade_mysql_json_datatype.result @@ -66,6 +66,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -85,7 +86,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade_ssl.result b/mysql-test/main/mysql_upgrade_ssl.result index b572f38be1f..bd6dd78647e 100644 --- a/mysql-test/main/mysql_upgrade_ssl.result +++ b/mysql-test/main/mysql_upgrade_ssl.result @@ -57,6 +57,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -76,7 +77,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/mysql_upgrade_view.result b/mysql-test/main/mysql_upgrade_view.result index 1018e2fe4e3..faa82d6d9aa 100644 --- a/mysql-test/main/mysql_upgrade_view.result +++ b/mysql-test/main/mysql_upgrade_view.result @@ -137,6 +137,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -156,7 +157,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -391,6 +391,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -410,7 +411,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -620,6 +620,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -639,7 +640,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/upgrade_MDEV-19650.result b/mysql-test/main/upgrade_MDEV-19650.result index 3be76243e39..7d36ab9c829 100644 --- a/mysql-test/main/upgrade_MDEV-19650.result +++ b/mysql-test/main/upgrade_MDEV-19650.result @@ -160,6 +160,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -179,7 +180,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/upgrade_MDEV-23102-1.result b/mysql-test/main/upgrade_MDEV-23102-1.result index 3d12e40b18e..64ba8fb44ff 100644 --- a/mysql-test/main/upgrade_MDEV-23102-1.result +++ b/mysql-test/main/upgrade_MDEV-23102-1.result @@ -178,6 +178,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -197,7 +198,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -381,6 +381,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -400,7 +401,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/upgrade_MDEV-23102-2.result b/mysql-test/main/upgrade_MDEV-23102-2.result index e986b06d974..44268908b3a 100644 --- a/mysql-test/main/upgrade_MDEV-23102-2.result +++ b/mysql-test/main/upgrade_MDEV-23102-2.result @@ -162,6 +162,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -181,7 +182,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK @@ -357,6 +357,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -376,7 +377,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/upgrade_geometrycolumn_procedure_definer.result b/mysql-test/main/upgrade_geometrycolumn_procedure_definer.result index 0b3864bd994..67d269c2b66 100644 --- a/mysql-test/main/upgrade_geometrycolumn_procedure_definer.result +++ b/mysql-test/main/upgrade_geometrycolumn_procedure_definer.result @@ -108,6 +108,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -127,7 +128,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/main/upgrade_mdev_24363.result b/mysql-test/main/upgrade_mdev_24363.result index 6cc5f2500a9..1991f336de0 100644 --- a/mysql-test/main/upgrade_mdev_24363.result +++ b/mysql-test/main/upgrade_mdev_24363.result @@ -122,6 +122,7 @@ sys.memory_by_user_by_current_bytes OK sys.memory_global_by_current_bytes OK sys.memory_global_total OK sys.metrics OK +sys.privileges_by_table_by_level OK sys.processlist OK sys.ps_check_lost_instrumentation OK sys.schema_auto_increment_columns OK @@ -141,7 +142,6 @@ sys.statements_with_full_table_scans OK sys.statements_with_runtimes_in_95th_percentile OK sys.statements_with_sorting OK sys.statements_with_temp_tables OK -sys.table_privileges OK sys.user_summary OK sys.user_summary_by_file_io OK sys.user_summary_by_file_io_type OK diff --git a/mysql-test/suite/sysschema/r/all_sys_objects_exist.result b/mysql-test/suite/sysschema/r/all_sys_objects_exist.result index eea49dcd6ae..81ff6b21454 100644 --- a/mysql-test/suite/sysschema/r/all_sys_objects_exist.result +++ b/mysql-test/suite/sysschema/r/all_sys_objects_exist.result @@ -22,6 +22,7 @@ memory_by_user_by_current_bytes memory_global_by_current_bytes memory_global_total metrics +privileges_by_table_by_level processlist ps_check_lost_instrumentation schema_auto_increment_columns @@ -42,7 +43,6 @@ statements_with_sorting statements_with_temp_tables statement_analysis sys_config -table_privileges user_summary user_summary_by_file_io user_summary_by_file_io_type diff --git a/mysql-test/suite/sysschema/r/v_privileges_by_table_by_level.result b/mysql-test/suite/sysschema/r/v_privileges_by_table_by_level.result new file mode 100644 index 00000000000..63b0d71ced6 --- /dev/null +++ b/mysql-test/suite/sysschema/r/v_privileges_by_table_by_level.result @@ -0,0 +1,264 @@ +DESC sys.privileges_by_table_by_level; +Field Type Null Key Default Extra +TABLE_SCHEMA varchar(64) NO NULL +TABLE_NAME varchar(64) NO NULL +GRANTEE varchar(385) NO +PRIVILEGE varchar(64) NO +LEVEL varchar(6) NO +CREATE DATABASE test1; +USE test1; +CREATE TABLE t1 (a int); +CREATE USER test1_user; +GRANT ALL PRIVILEGES ON test1.* TO test1_user; +# Grant all table privileges +GRANT ALL ON t1 to test1_user; +SELECT table_schema, table_name, +CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END, + privilege, level + FROM sys.privileges_by_table_by_level WHERE table_name='t1'; +table_schema table_name CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END privilege level +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 'test1_user'@'%' SELECT SCHEMA +test1 t1 'test1_user'@'%' INSERT SCHEMA +test1 t1 'test1_user'@'%' UPDATE SCHEMA +test1 t1 'test1_user'@'%' DELETE SCHEMA +test1 t1 'test1_user'@'%' CREATE SCHEMA +test1 t1 'test1_user'@'%' DROP SCHEMA +test1 t1 'test1_user'@'%' REFERENCES SCHEMA +test1 t1 'test1_user'@'%' INDEX SCHEMA +test1 t1 'test1_user'@'%' ALTER SCHEMA +test1 t1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 t1 'test1_user'@'%' TRIGGER SCHEMA +test1 t1 'test1_user'@'%' DELETE HISTORY SCHEMA +test1 t1 'test1_user'@'%' SELECT TABLE +test1 t1 'test1_user'@'%' INSERT TABLE +test1 t1 'test1_user'@'%' UPDATE TABLE +test1 t1 'test1_user'@'%' DELETE TABLE +test1 t1 'test1_user'@'%' CREATE TABLE +test1 t1 'test1_user'@'%' DROP TABLE +test1 t1 'test1_user'@'%' REFERENCES TABLE +test1 t1 'test1_user'@'%' INDEX TABLE +test1 t1 'test1_user'@'%' ALTER TABLE +test1 t1 'test1_user'@'%' SHOW VIEW TABLE +test1 t1 'test1_user'@'%' TRIGGER TABLE +test1 t1 'test1_user'@'%' DELETE HISTORY TABLE +# Revoke some table privileges +REVOKE REFERENCES, DELETE, ALTER, DROP ON t1 FROM test1_user; +SELECT table_schema, table_name, +CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END, + privilege, level + FROM sys.privileges_by_table_by_level WHERE table_name='t1'; +table_schema table_name CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END privilege level +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 SELECT GLOBAL +test1 t1 INSERT GLOBAL +test1 t1 UPDATE GLOBAL +test1 t1 DELETE GLOBAL +test1 t1 CREATE GLOBAL +test1 t1 DROP GLOBAL +test1 t1 REFERENCES GLOBAL +test1 t1 INDEX GLOBAL +test1 t1 ALTER GLOBAL +test1 t1 SHOW VIEW GLOBAL +test1 t1 TRIGGER GLOBAL +test1 t1 DELETE HISTORY GLOBAL +test1 t1 'test1_user'@'%' SELECT SCHEMA +test1 t1 'test1_user'@'%' INSERT SCHEMA +test1 t1 'test1_user'@'%' UPDATE SCHEMA +test1 t1 'test1_user'@'%' DELETE SCHEMA +test1 t1 'test1_user'@'%' CREATE SCHEMA +test1 t1 'test1_user'@'%' DROP SCHEMA +test1 t1 'test1_user'@'%' REFERENCES SCHEMA +test1 t1 'test1_user'@'%' INDEX SCHEMA +test1 t1 'test1_user'@'%' ALTER SCHEMA +test1 t1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 t1 'test1_user'@'%' TRIGGER SCHEMA +test1 t1 'test1_user'@'%' DELETE HISTORY SCHEMA +test1 t1 'test1_user'@'%' SELECT TABLE +test1 t1 'test1_user'@'%' INSERT TABLE +test1 t1 'test1_user'@'%' UPDATE TABLE +test1 t1 'test1_user'@'%' CREATE TABLE +test1 t1 'test1_user'@'%' INDEX TABLE +test1 t1 'test1_user'@'%' SHOW VIEW TABLE +test1 t1 'test1_user'@'%' TRIGGER TABLE +test1 t1 'test1_user'@'%' DELETE HISTORY TABLE +CREATE ROLE test1_role; +GRANT SELECT, UPDATE, DELETE, DROP, INDEX ON t1 to test1_role; +# Must show both the user and the role +SELECT * FROM sys.privileges_by_table_by_level +WHERE table_schema='test1' AND table_name='t1' AND grantee LIKE '%test1%'; +TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL +test1 t1 'test1_user'@'%' SELECT SCHEMA +test1 t1 'test1_user'@'%' INSERT SCHEMA +test1 t1 'test1_user'@'%' UPDATE SCHEMA +test1 t1 'test1_user'@'%' DELETE SCHEMA +test1 t1 'test1_user'@'%' CREATE SCHEMA +test1 t1 'test1_user'@'%' DROP SCHEMA +test1 t1 'test1_user'@'%' REFERENCES SCHEMA +test1 t1 'test1_user'@'%' INDEX SCHEMA +test1 t1 'test1_user'@'%' ALTER SCHEMA +test1 t1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 t1 'test1_user'@'%' TRIGGER SCHEMA +test1 t1 'test1_user'@'%' DELETE HISTORY SCHEMA +test1 t1 'test1_user'@'%' SELECT TABLE +test1 t1 'test1_user'@'%' INSERT TABLE +test1 t1 'test1_user'@'%' UPDATE TABLE +test1 t1 'test1_user'@'%' CREATE TABLE +test1 t1 'test1_user'@'%' INDEX TABLE +test1 t1 'test1_user'@'%' SHOW VIEW TABLE +test1 t1 'test1_user'@'%' TRIGGER TABLE +test1 t1 'test1_user'@'%' DELETE HISTORY TABLE +test1 t1 'test1_role'@'' SELECT TABLE +test1 t1 'test1_role'@'' UPDATE TABLE +test1 t1 'test1_role'@'' DELETE TABLE +test1 t1 'test1_role'@'' DROP TABLE +test1 t1 'test1_role'@'' INDEX TABLE +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT * FROM sys.privileges_by_table_by_level +WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; +TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL +test1 v1 'test1_user'@'%' SELECT SCHEMA +test1 v1 'test1_user'@'%' INSERT SCHEMA +test1 v1 'test1_user'@'%' UPDATE SCHEMA +test1 v1 'test1_user'@'%' DELETE SCHEMA +test1 v1 'test1_user'@'%' CREATE SCHEMA +test1 v1 'test1_user'@'%' DROP SCHEMA +test1 v1 'test1_user'@'%' REFERENCES SCHEMA +test1 v1 'test1_user'@'%' INDEX SCHEMA +test1 v1 'test1_user'@'%' ALTER SCHEMA +test1 v1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 v1 'test1_user'@'%' TRIGGER SCHEMA +test1 v1 'test1_user'@'%' DELETE HISTORY SCHEMA +GRANT SELECT ON v1 TO test1_role; +SELECT * FROM sys.privileges_by_table_by_level +WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; +TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL +test1 v1 'test1_user'@'%' SELECT SCHEMA +test1 v1 'test1_user'@'%' INSERT SCHEMA +test1 v1 'test1_user'@'%' UPDATE SCHEMA +test1 v1 'test1_user'@'%' DELETE SCHEMA +test1 v1 'test1_user'@'%' CREATE SCHEMA +test1 v1 'test1_user'@'%' DROP SCHEMA +test1 v1 'test1_user'@'%' REFERENCES SCHEMA +test1 v1 'test1_user'@'%' INDEX SCHEMA +test1 v1 'test1_user'@'%' ALTER SCHEMA +test1 v1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 v1 'test1_user'@'%' TRIGGER SCHEMA +test1 v1 'test1_user'@'%' DELETE HISTORY SCHEMA +test1 v1 'test1_role'@'' SELECT TABLE +GRANT ALL ON v1 TO test1_user; +SELECT * FROM sys.privileges_by_table_by_level +WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; +TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL +test1 v1 'test1_user'@'%' SELECT SCHEMA +test1 v1 'test1_user'@'%' INSERT SCHEMA +test1 v1 'test1_user'@'%' UPDATE SCHEMA +test1 v1 'test1_user'@'%' DELETE SCHEMA +test1 v1 'test1_user'@'%' CREATE SCHEMA +test1 v1 'test1_user'@'%' DROP SCHEMA +test1 v1 'test1_user'@'%' REFERENCES SCHEMA +test1 v1 'test1_user'@'%' INDEX SCHEMA +test1 v1 'test1_user'@'%' ALTER SCHEMA +test1 v1 'test1_user'@'%' SHOW VIEW SCHEMA +test1 v1 'test1_user'@'%' TRIGGER SCHEMA +test1 v1 'test1_user'@'%' DELETE HISTORY SCHEMA +test1 v1 'test1_user'@'%' SELECT TABLE +test1 v1 'test1_user'@'%' INSERT TABLE +test1 v1 'test1_user'@'%' UPDATE TABLE +test1 v1 'test1_user'@'%' DELETE TABLE +test1 v1 'test1_user'@'%' CREATE TABLE +test1 v1 'test1_user'@'%' DROP TABLE +test1 v1 'test1_user'@'%' REFERENCES TABLE +test1 v1 'test1_user'@'%' INDEX TABLE +test1 v1 'test1_user'@'%' ALTER TABLE +test1 v1 'test1_user'@'%' SHOW VIEW TABLE +test1 v1 'test1_user'@'%' TRIGGER TABLE +test1 v1 'test1_user'@'%' DELETE HISTORY TABLE +test1 v1 'test1_role'@'' SELECT TABLE +DROP TABLE t1; +DROP VIEW v1; +DROP USER test1_user; +DROP ROLE test1_role; +DROP DATABASE test1; diff --git a/mysql-test/suite/sysschema/r/v_table_privileges.result b/mysql-test/suite/sysschema/r/v_table_privileges.result deleted file mode 100644 index 57eb9077081..00000000000 --- a/mysql-test/suite/sysschema/r/v_table_privileges.result +++ /dev/null @@ -1,92 +0,0 @@ -DESC sys.table_privileges; -Field Type Null Key Default Extra -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -GRANTEE varchar(385) NO -PRIVILEGE varchar(64) NO -LEVEL varchar(6) NO -SELECT * FROM sys.table_privileges; -CREATE DATABASE test2; -USE test2; -CREATE TABLE t1 (a int); -CREATE USER test2_user; -# Grant everything first -GRANT ALL ON t1 TO test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2_user%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -test2 t1 'test2_user'@'%' SELECT TABLE -test2 t1 'test2_user'@'%' INSERT TABLE -test2 t1 'test2_user'@'%' UPDATE TABLE -test2 t1 'test2_user'@'%' DELETE TABLE -test2 t1 'test2_user'@'%' CREATE TABLE -test2 t1 'test2_user'@'%' DROP TABLE -test2 t1 'test2_user'@'%' REFERENCES TABLE -test2 t1 'test2_user'@'%' INDEX TABLE -test2 t1 'test2_user'@'%' ALTER TABLE -test2 t1 'test2_user'@'%' SHOW VIEW TABLE -test2 t1 'test2_user'@'%' TRIGGER TABLE -test2 t1 'test2_user'@'%' DELETE HISTORY TABLE -# Then revoke some privileges -REVOKE REFERENCES, DELETE, ALTER, DROP ON t1 FROM test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2_user%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -test2 t1 'test2_user'@'%' SELECT TABLE -test2 t1 'test2_user'@'%' INSERT TABLE -test2 t1 'test2_user'@'%' UPDATE TABLE -test2 t1 'test2_user'@'%' CREATE TABLE -test2 t1 'test2_user'@'%' INDEX TABLE -test2 t1 'test2_user'@'%' SHOW VIEW TABLE -test2 t1 'test2_user'@'%' TRIGGER TABLE -test2 t1 'test2_user'@'%' DELETE HISTORY TABLE -CREATE ROLE test2_role; -GRANT SELECT, UPDATE, DELETE, DROP, INDEX ON t1 to test2_role; -# Must show both the user and the role -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -test2 t1 'test2_user'@'%' SELECT TABLE -test2 t1 'test2_user'@'%' INSERT TABLE -test2 t1 'test2_user'@'%' UPDATE TABLE -test2 t1 'test2_user'@'%' CREATE TABLE -test2 t1 'test2_user'@'%' INDEX TABLE -test2 t1 'test2_user'@'%' SHOW VIEW TABLE -test2 t1 'test2_user'@'%' TRIGGER TABLE -test2 t1 'test2_user'@'%' DELETE HISTORY TABLE -test2 t1 'test2_role'@'' SELECT TABLE -test2 t1 'test2_role'@'' UPDATE TABLE -test2 t1 'test2_role'@'' DELETE TABLE -test2 t1 'test2_role'@'' DROP TABLE -test2 t1 'test2_role'@'' INDEX TABLE -CREATE VIEW v1 AS SELECT * FROM t1; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -GRANT SELECT ON v1 TO test2_role; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -test2 v1 'test2_role'@'' SELECT TABLE -GRANT ALL ON v1 TO test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; -TABLE_SCHEMA TABLE_NAME GRANTEE PRIVILEGE LEVEL -test2 v1 'test2_user'@'%' SELECT TABLE -test2 v1 'test2_user'@'%' INSERT TABLE -test2 v1 'test2_user'@'%' UPDATE TABLE -test2 v1 'test2_user'@'%' DELETE TABLE -test2 v1 'test2_user'@'%' CREATE TABLE -test2 v1 'test2_user'@'%' DROP TABLE -test2 v1 'test2_user'@'%' REFERENCES TABLE -test2 v1 'test2_user'@'%' INDEX TABLE -test2 v1 'test2_user'@'%' ALTER TABLE -test2 v1 'test2_user'@'%' SHOW VIEW TABLE -test2 v1 'test2_user'@'%' TRIGGER TABLE -test2 v1 'test2_user'@'%' DELETE HISTORY TABLE -test2 v1 'test2_role'@'' SELECT TABLE -DROP TABLE t1; -DROP VIEW v1; -DROP USER test2_user; -DROP ROLE test2_role; -DROP DATABASE test2; diff --git a/mysql-test/suite/sysschema/t/v_privileges_by_table_by_level.test b/mysql-test/suite/sysschema/t/v_privileges_by_table_by_level.test new file mode 100644 index 00000000000..3e866a621b1 --- /dev/null +++ b/mysql-test/suite/sysschema/t/v_privileges_by_table_by_level.test @@ -0,0 +1,54 @@ +-- source include/not_embedded.inc +# Tests for sys schema +# Verify the sys.privileges_by_table_by_level view + +# Ensure structure changes don't slip in +DESC sys.privileges_by_table_by_level; + +CREATE DATABASE test1; +USE test1; +CREATE TABLE t1 (a int); +CREATE USER test1_user; + +GRANT ALL PRIVILEGES ON test1.* TO test1_user; + +--echo # Grant all table privileges +GRANT ALL ON t1 to test1_user; +SELECT table_schema, table_name, + CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END, + privilege, level + FROM sys.privileges_by_table_by_level WHERE table_name='t1'; + +--echo # Revoke some table privileges +REVOKE REFERENCES, DELETE, ALTER, DROP ON t1 FROM test1_user; +SELECT table_schema, table_name, + CASE WHEN grantee LIKE '\'root%' THEN '' ELSE GRANTEE END, + privilege, level + FROM sys.privileges_by_table_by_level WHERE table_name='t1'; + +CREATE ROLE test1_role; +GRANT SELECT, UPDATE, DELETE, DROP, INDEX ON t1 to test1_role; + +--echo # Must show both the user and the role +SELECT * FROM sys.privileges_by_table_by_level + WHERE table_schema='test1' AND table_name='t1' AND grantee LIKE '%test1%'; + +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT * FROM sys.privileges_by_table_by_level + WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; + +GRANT SELECT ON v1 TO test1_role; +SELECT * FROM sys.privileges_by_table_by_level + WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; + +GRANT ALL ON v1 TO test1_user; +SELECT * FROM sys.privileges_by_table_by_level + WHERE table_schema='test1' AND table_name='v1' AND grantee LIKE '%test1%'; + +DROP TABLE t1; +DROP VIEW v1; +DROP USER test1_user; +DROP ROLE test1_role; +DROP DATABASE test1; + + diff --git a/mysql-test/suite/sysschema/t/v_table_privileges.test b/mysql-test/suite/sysschema/t/v_table_privileges.test deleted file mode 100644 index 2186b75c959..00000000000 --- a/mysql-test/suite/sysschema/t/v_table_privileges.test +++ /dev/null @@ -1,53 +0,0 @@ --- source include/not_embedded.inc -# -- source ../include/ps_truncate_all_tables.inc -# Tests for sys schema -# Verify the sys.table_privileges view - -# Ensure structure changes don't slip in -DESC sys.table_privileges; - -# Make sure view select does not error, but ignore results ---disable_result_log -SELECT * FROM sys.table_privileges; ---enable_result_log - -CREATE DATABASE test2; -USE test2; -CREATE TABLE t1 (a int); - -CREATE USER test2_user; - ---echo # Grant everything first -GRANT ALL ON t1 TO test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2_user%'; - ---echo # Then revoke some privileges -REVOKE REFERENCES, DELETE, ALTER, DROP ON t1 FROM test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2_user%'; - -CREATE ROLE test2_role; -GRANT SELECT, UPDATE, DELETE, DROP, INDEX ON t1 to test2_role; ---echo # Must show both the user and the role -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='t1' - AND grantee LIKE '%test2%'; - -CREATE VIEW v1 AS SELECT * FROM t1; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; - -GRANT SELECT ON v1 TO test2_role; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; -GRANT ALL ON v1 TO test2_user; -SELECT * FROM sys.table_privileges WHERE table_schema='test2' AND table_name='v1' - AND grantee LIKE '%test2%'; - -DROP TABLE t1; -DROP VIEW v1; -DROP USER test2_user; -DROP ROLE test2_role; -DROP DATABASE test2; - - diff --git a/scripts/sys_schema/CMakeLists.txt b/scripts/sys_schema/CMakeLists.txt index c0a953ccf18..26256c5c9dd 100644 --- a/scripts/sys_schema/CMakeLists.txt +++ b/scripts/sys_schema/CMakeLists.txt @@ -38,7 +38,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/schema_object_overview.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/schema_auto_increment_columns.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/x_schema_flattened_keys.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/schema_redundant_indexes.sql -${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/table_privileges.sql +${CMAKE_CURRENT_SOURCE_DIR}/views/i_s/privileges_by_table_by_level.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/p_s/ps_check_lost_instrumentation_57.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/p_s/latest_file_io.sql ${CMAKE_CURRENT_SOURCE_DIR}/views/p_s/x_latest_file_io.sql diff --git a/scripts/sys_schema/NEWS.md b/scripts/sys_schema/NEWS.md index cf180fb614d..2b594801bf7 100644 --- a/scripts/sys_schema/NEWS.md +++ b/scripts/sys_schema/NEWS.md @@ -4,7 +4,7 @@ ### Improvements -* A new `table_privileges` view was added, which displays privileges on tables granted at all levels (user, schema, table) +* A new `privileges_by_table_by_level` view was added, which displays granted privileges broken down by the table on which they allow access and the level on which they were granted ## 1.5.1 (2016-07-07) diff --git a/scripts/sys_schema/README.md b/scripts/sys_schema/README.md index 0dd5fb96e55..e06f78e1510 100644 --- a/scripts/sys_schema/README.md +++ b/scripts/sys_schema/README.md @@ -1635,11 +1635,12 @@ mysql> select * from schema_object_overview; 10 rows in set (1.58 sec) ``` -#### table_privileges +#### privileges_by_table_by_level ##### Description --- Shows privileges on existing tables and views granted at all possible levels: +-- Shows granted privileges broken down by table on which they allow access +-- and level on which they were granted: -- - user_privileges -- - schema_privileges -- - table_privileges @@ -1647,7 +1648,7 @@ mysql> select * from schema_object_overview; ##### Structure ```SQL -MariaDB [test]> desc sys.table_privileges; +MariaDB [test]> desc sys.privileges_by_table_by_level; +--------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ @@ -1663,7 +1664,7 @@ MariaDB [test]> desc sys.table_privileges; ##### Example ```SQL -mysql> select * from sys.table_privileges; +mysql> select * from sys.privileges_by_table_by_level; +--------------+------------+--------------------+----------------+--------+ | TABLE_SCHEMA | TABLE_NAME | GRANTEE | PRIVILEGE_TYPE | LEVEL | +--------------+------------+--------------------+----------------+--------+ diff --git a/scripts/sys_schema/sys_56.sql b/scripts/sys_schema/sys_56.sql index 8bcdcf6f486..1836d528296 100644 --- a/scripts/sys_schema/sys_56.sql +++ b/scripts/sys_schema/sys_56.sql @@ -55,7 +55,7 @@ SOURCE ./views/i_s/schema_object_overview.sql SOURCE ./views/i_s/schema_auto_increment_columns.sql SOURCE ./views/i_s/x_schema_flattened_keys.sql SOURCE ./views/i_s/schema_redundant_indexes.sql -SOURCE ./views/i_s/table_privileges.sql +SOURCE ./views/i_s/privileges_by_table_by_level.sql SOURCE ./views/p_s/ps_check_lost_instrumentation.sql SOURCE ./views/p_s/processlist.sql diff --git a/scripts/sys_schema/sys_57.sql b/scripts/sys_schema/sys_57.sql index 9aad516975d..47d442b347a 100644 --- a/scripts/sys_schema/sys_57.sql +++ b/scripts/sys_schema/sys_57.sql @@ -56,7 +56,7 @@ SOURCE ./views/i_s/schema_object_overview.sql SOURCE ./views/i_s/schema_auto_increment_columns.sql SOURCE ./views/i_s/x_schema_flattened_keys.sql SOURCE ./views/i_s/schema_redundant_indexes.sql -SOURCE ./views/i_s/table_privileges.sql +SOURCE ./views/i_s/privileges_by_table_by_level.sql SOURCE ./views/p_s/ps_check_lost_instrumentation_57.sql diff --git a/scripts/sys_schema/views/i_s/table_privileges.sql b/scripts/sys_schema/views/i_s/privileges_by_table_by_level.sql similarity index 92% rename from scripts/sys_schema/views/i_s/table_privileges.sql rename to scripts/sys_schema/views/i_s/privileges_by_table_by_level.sql index 6aed7bf8794..4f769427478 100644 --- a/scripts/sys_schema/views/i_s/table_privileges.sql +++ b/scripts/sys_schema/views/i_s/privileges_by_table_by_level.sql @@ -1,12 +1,13 @@ -- --- View: table_privileges +-- View: privileges_by_table_by_level -- --- Shows privileges on existing tables and views granted at all possible levels: +-- Shows granted privileges broken down by the table on which they allow access +-- and the level on which they were granted: -- - user_privileges -- - schema_privileges -- - table_privileges -- --- mysql> select * from sys.table_privileges; +-- mysql> select * from sys.privileges_by_table_by_level; -- +--------------+------------+--------------------+----------------+--------+ -- | TABLE_SCHEMA | TABLE_NAME | GRANTEE | PRIVILEGE_TYPE | LEVEL | -- +--------------+------------+--------------------+----------------+--------+ @@ -32,7 +33,7 @@ CREATE OR REPLACE ALGORITHM = TEMPTABLE DEFINER = 'mariadb.sys'@'localhost' SQL SECURITY INVOKER -VIEW table_privileges ( +VIEW privileges_by_table_by_level ( TABLE_SCHEMA, TABLE_NAME, GRANTEE, diff --git a/scripts/sys_schema/views/version.sql b/scripts/sys_schema/views/version.sql index 4ba6401612b..1210ff084d9 100644 --- a/scripts/sys_schema/views/version.sql +++ b/scripts/sys_schema/views/version.sql @@ -33,5 +33,5 @@ VIEW version ( sys_version, mysql_version ) AS -SELECT '1.5.2' AS sys_version, +SELECT '1.5.2' AS sys_version, version() AS mysql_version;