mysql-server/mysql-test/t/grant_dynamic_session_variables_admin.test
2025-03-05 14:31:37 +07:00

203 lines
6.3 KiB
Text

# Tests for WL#12217
--source include/have_binlog_format_row.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--echo # Testing FR2
--echo Must have SESSION_VARIABLES_ADMIN with grant option
--let $user = root@localhost
--source include/show_grants.inc
--echo # Testing FR1
CREATE USER wl12217@localhost;
CREATE DATABASE wl12217;
GRANT ALL PRIVILEGES ON wl12217.* TO wl12217@localhost;
--echo # Must work
GRANT SESSION_VARIABLES_ADMIN ON *.* TO wl12217@localhost;
--echo # Must work again
GRANT SESSION_VARIABLES_ADMIN ON *.* TO wl12217@localhost;
--echo # Must fail
--error ER_ILLEGAL_PRIVILEGE_LEVEL
GRANT SESSION_VARIABLES_ADMIN ON mysql.* TO wl12217@localhost;
--echo # Cleanup
DROP DATABASE wl12217;
DROP USER wl12217@localhost;
--echo # Testing FR3, FR4
CREATE USER wl12217@localhost;
CREATE DATABASE wl12217;
GRANT ALL PRIVILEGES ON wl12217.* TO wl12217@localhost;
--echo # Switch to wl12217@localhost
connect(confr3,localhost,wl12217,,wl12217);
--echo # Must fail
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION binlog_direct_non_transactional_updates = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION binlog_format = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION binlog_row_image = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION binlog_row_value_options = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION binlog_rows_query_log_events = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION bulk_insert_buffer_size = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION character_set_database = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION character_set_filesystem = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION pseudo_replica_mode = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION pseudo_thread_id = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION histogram_generation_max_mem_size = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION sql_log_off = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION original_commit_timestamp = DEFAULT;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION sql_log_bin = DEFAULT;
--echo # Back to default connection
connection default;
disconnect confr3;
GRANT SESSION_VARIABLES_ADMIN ON *.* TO wl12217@localhost;
--echo # Back to wl12217@localhost
connect(confr3,localhost,wl12217,,wl12217);
--echo # Must pass
SET SESSION auto_increment_increment = DEFAULT;
SET SESSION auto_increment_offset = DEFAULT;
SET SESSION binlog_direct_non_transactional_updates = DEFAULT;
SET SESSION binlog_format = DEFAULT;
SET SESSION binlog_row_image = DEFAULT;
SET SESSION binlog_row_value_options = DEFAULT;
SET SESSION binlog_rows_query_log_events = DEFAULT;
SET SESSION bulk_insert_buffer_size = DEFAULT;
SET SESSION character_set_database = DEFAULT;
SET SESSION character_set_filesystem = DEFAULT;
SET SESSION collation_database = DEFAULT;
SET SESSION pseudo_replica_mode = DEFAULT;
SET SESSION pseudo_thread_id = DEFAULT;
SET SESSION histogram_generation_max_mem_size = DEFAULT;
SET SESSION sql_log_off = DEFAULT;
SET SESSION original_commit_timestamp = DEFAULT;
SET SESSION default_collation_for_utf8mb4 = DEFAULT;
SET SESSION explicit_defaults_for_timestamp = DEFAULT;
SET SESSION sql_log_bin = DEFAULT;
SET SESSION rbr_exec_mode = DEFAULT;
--echo # Back to default connection
connection default;
disconnect confr3;
--echo # Cleanup
DROP DATABASE wl12217;
DROP USER wl12217@localhost;
--echo # Testing FR5
CREATE USER wl12217@localhost;
CREATE DATABASE wl12217;
GRANT ALL PRIVILEGES ON wl12217.* TO wl12217@localhost;
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO wl12217@localhost;
--echo # Switch to wl12217@localhost
connect(confr5,localhost,wl12217,,wl12217);
--echo # Must pass
SET SESSION auto_increment_increment = DEFAULT;
SET SESSION auto_increment_offset = DEFAULT;
SET SESSION binlog_direct_non_transactional_updates = DEFAULT;
SET SESSION binlog_format = DEFAULT;
SET SESSION binlog_row_image = DEFAULT;
SET SESSION binlog_row_value_options = DEFAULT;
SET SESSION binlog_rows_query_log_events = DEFAULT;
SET SESSION bulk_insert_buffer_size = DEFAULT;
SET SESSION character_set_database = DEFAULT;
SET SESSION character_set_filesystem = DEFAULT;
SET SESSION collation_database = DEFAULT;
SET SESSION pseudo_replica_mode = DEFAULT;
SET SESSION pseudo_thread_id = DEFAULT;
SET SESSION histogram_generation_max_mem_size = DEFAULT;
SET SESSION sql_log_off = DEFAULT;
SET SESSION original_commit_timestamp = DEFAULT;
SET SESSION default_collation_for_utf8mb4 = DEFAULT;
SET SESSION explicit_defaults_for_timestamp = DEFAULT;
SET SESSION sql_log_bin = DEFAULT;
SET SESSION rbr_exec_mode = DEFAULT;
--echo # Back to default connection
connection default;
disconnect confr5;
--echo # Cleanup
DROP DATABASE wl12217;
DROP USER wl12217@localhost;
--echo # Testing FR6
CREATE USER wl12217@localhost;
CREATE DATABASE wl12217;
GRANT ALL PRIVILEGES ON wl12217.* TO wl12217@localhost;
GRANT SUPER ON *.* TO wl12217@localhost;
--echo # Switch to wl12217@localhost
connect(confr5,localhost,wl12217,,wl12217);
--echo # Must pass
SET SESSION auto_increment_increment = DEFAULT;
SET SESSION auto_increment_offset = DEFAULT;
SET SESSION binlog_direct_non_transactional_updates = DEFAULT;
SET SESSION binlog_format = DEFAULT;
SET SESSION binlog_row_image = DEFAULT;
SET SESSION binlog_row_value_options = DEFAULT;
SET SESSION binlog_rows_query_log_events = DEFAULT;
SET SESSION bulk_insert_buffer_size = DEFAULT;
SET SESSION character_set_database = DEFAULT;
SET SESSION character_set_filesystem = DEFAULT;
SET SESSION collation_database = DEFAULT;
SET SESSION pseudo_replica_mode = DEFAULT;
SET SESSION pseudo_thread_id = DEFAULT;
SET SESSION histogram_generation_max_mem_size = DEFAULT;
SET SESSION sql_log_off = DEFAULT;
SET SESSION original_commit_timestamp = DEFAULT;
SET SESSION default_collation_for_utf8mb4 = DEFAULT;
SET SESSION explicit_defaults_for_timestamp = DEFAULT;
SET SESSION sql_log_bin = DEFAULT;
SET SESSION rbr_exec_mode = DEFAULT;
--echo # Back to default connection
connection default;
disconnect confr5;
--echo # Cleanup
DROP DATABASE wl12217;
DROP USER wl12217@localhost;
--echo # Testing FR7
--echo # Must have SESSION_VARIABLES_ADMIN
SHOW GRANTS for "mysql.session"@localhost;
--echo #
--echo # End of 8.0 tests
--echo #
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc