mirror of
https://github.com/MariaDB/server.git
synced 2025-07-20 10:24:14 +03:00
mariadb-install-db --auth-root-authentication-method=normal created 4 root accounts by default, but only two of these had PROXY privilege granted. mariadb-install-db (default option --auth-root-authentication-method=socket) as non-root user also didn't grant PROXY priv to the created nonroot@localhost user. To fix this, in mysql_system_tables_data.sql, we re-use tmp_user_nopasswd as this contains the list of all root users. REPLACE INTO tmp_proxies_priv SELECT @current_hostname, IFNULL(@auth_root_socket, 'root') creates the $user@$current_host but will not error if @auth_root_socket is null. Note @current_hostname lines are filtered out with --cross-bootstrap in mariadb-install-db so it was needed to include this expression for consistency. Like the existing mysql_system_tables.sql is used to create teh $user@localhost proxies_priv. Test cases roles.acl_statistics, perfschema,privilege_table_io depends on the number of proxy users. After: --auth-root-authentication-method=normal: MariaDB [mysql]> select * from global_priv; +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ | Host | User | Priv | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0} | | localhost | root | {"access":18446744073709551615} | | bark | root | {"access":18446744073709551615} | | 127.0.0.1 | root | {"access":18446744073709551615} | | ::1 | root | {"access":18446744073709551615} | | localhost | | {} | | bark | | {} | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ 7 rows in set (0.001 sec) MariaDB [mysql]> select * from proxies_priv; +-----------+------+--------------+--------------+------------+---------+---------------------+ | Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp | +-----------+------+--------------+--------------+------------+---------+---------------------+ | localhost | root | | | 1 | | 2023-07-10 12:12:24 | | 127.0.0.1 | root | | | 1 | | 2023-07-10 12:12:24 | | ::1 | root | | | 1 | | 2023-07-10 12:12:24 | | bark | root | | | 1 | | 2023-07-10 12:12:24 | +-----------+------+--------------+--------------+------------+---------+---------------------+ --auth-root-authentication-method=socket: MariaDB [mysql]> select * from proxies_priv; +-----------+------+--------------+--------------+------------+---------+---------------------+ | Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp | +-----------+------+--------------+--------------+------------+---------+---------------------+ | localhost | root | | | 1 | | 2023-07-10 12:11:55 | | localhost | dan | | | 1 | | 2023-07-10 12:11:55 | | bark | dan | | | 1 | | 2023-07-10 12:11:55 | +-----------+------+--------------+--------------+------------+---------+---------------------+ 3 rows in set (0.017 sec) MariaDB [mysql]> select * from global_priv; +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | Host | User | Priv | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0} | | localhost | root | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} | | localhost | dan | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} | | localhost | | {} | | bark | | {} | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ 5 rows in set (0.000 sec) MariaDB [mysql]> show grants; +----------------------------------------------------------------------------------------------------------------------------------------+ | Grants for dan@localhost | +----------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO `dan`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION | | GRANT PROXY ON ''@'%' TO 'dan'@'localhost' WITH GRANT OPTION | +----------------------------------------------------------------------------------------------------------------------------------------+
151 lines
6.7 KiB
Plaintext
151 lines
6.7 KiB
Plaintext
# restart
|
|
drop table if exists test.marker;
|
|
create table test.marker(a int);
|
|
update performance_schema.setup_consumers set enabled='NO';
|
|
update performance_schema.setup_instruments set enabled='NO';
|
|
update performance_schema.setup_instruments set enabled='YES'
|
|
where name like "wait/io/table/%";
|
|
truncate table performance_schema.events_waits_history_long;
|
|
flush status;
|
|
flush tables;
|
|
# We are forced to suppress here the server response.
|
|
optimize table mysql.user;
|
|
optimize table mysql.db;
|
|
optimize table mysql.proxies_priv;
|
|
optimize table mysql.roles_mapping;
|
|
optimize table mysql.tables_priv;
|
|
optimize table mysql.procs_priv;
|
|
optimize table mysql.servers;
|
|
optimize table mysql.roles_mapping;
|
|
update performance_schema.setup_consumers set enabled='YES';
|
|
update performance_schema.setup_objects set enabled='YES'
|
|
where object_type='TABLE' and object_schema= 'mysql';
|
|
flush privileges;
|
|
insert into test.marker set a = 1;
|
|
insert into test.marker set a = 1;
|
|
insert into test.marker set a = 1;
|
|
show variables where
|
|
`Variable_name` != "performance_schema_max_statement_classes" and
|
|
`Variable_name` like "performance_schema%";
|
|
Variable_name Value
|
|
performance_schema ON
|
|
performance_schema_accounts_size 100
|
|
performance_schema_digests_size 200
|
|
performance_schema_events_stages_history_long_size 1000
|
|
performance_schema_events_stages_history_size 10
|
|
performance_schema_events_statements_history_long_size 1000
|
|
performance_schema_events_statements_history_size 10
|
|
performance_schema_events_waits_history_long_size 10000
|
|
performance_schema_events_waits_history_size 10
|
|
performance_schema_hosts_size 100
|
|
performance_schema_max_cond_classes 90
|
|
performance_schema_max_cond_instances 1000
|
|
performance_schema_max_digest_length 1024
|
|
performance_schema_max_file_classes 50
|
|
performance_schema_max_file_handles 32768
|
|
performance_schema_max_file_instances 10000
|
|
performance_schema_max_mutex_classes 200
|
|
performance_schema_max_mutex_instances 5000
|
|
performance_schema_max_rwlock_classes 40
|
|
performance_schema_max_rwlock_instances 5000
|
|
performance_schema_max_socket_classes 10
|
|
performance_schema_max_socket_instances 1000
|
|
performance_schema_max_stage_classes 160
|
|
performance_schema_max_table_handles 1000
|
|
performance_schema_max_table_instances 500
|
|
performance_schema_max_thread_classes 50
|
|
performance_schema_max_thread_instances 200
|
|
performance_schema_session_connect_attrs_size 2048
|
|
performance_schema_setup_actors_size 100
|
|
performance_schema_setup_objects_size 100
|
|
performance_schema_users_size 100
|
|
show status like "performance_schema%";
|
|
Variable_name Value
|
|
Performance_schema_accounts_lost 0
|
|
Performance_schema_cond_classes_lost 0
|
|
Performance_schema_cond_instances_lost 0
|
|
Performance_schema_digest_lost 0
|
|
Performance_schema_file_classes_lost 0
|
|
Performance_schema_file_handles_lost 0
|
|
Performance_schema_file_instances_lost 0
|
|
Performance_schema_hosts_lost 0
|
|
Performance_schema_locker_lost 0
|
|
Performance_schema_mutex_classes_lost 0
|
|
Performance_schema_mutex_instances_lost 0
|
|
Performance_schema_rwlock_classes_lost 0
|
|
Performance_schema_rwlock_instances_lost 0
|
|
Performance_schema_session_connect_attrs_lost 0
|
|
Performance_schema_socket_classes_lost 0
|
|
Performance_schema_socket_instances_lost 0
|
|
Performance_schema_stage_classes_lost 0
|
|
Performance_schema_statement_classes_lost 0
|
|
Performance_schema_table_handles_lost 0
|
|
Performance_schema_table_instances_lost 0
|
|
Performance_schema_thread_classes_lost 0
|
|
Performance_schema_thread_instances_lost 0
|
|
Performance_schema_users_lost 0
|
|
update performance_schema.setup_consumers set enabled='NO';
|
|
select event_name,
|
|
left(source, locate(":", source)) as short_source,
|
|
object_type, object_schema,
|
|
if (locate("#sql-", object_name), "#sql-XXXX", object_name)
|
|
as pretty_name,
|
|
operation, number_of_bytes
|
|
from performance_schema.events_waits_history_long
|
|
where event_name like 'wait/io/table/%'
|
|
and object_schema in ("test", "mysql")
|
|
order by thread_id, event_id;
|
|
event_name short_source object_type object_schema pretty_name operation number_of_bytes
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql global_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql db fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql db fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql db fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql proxies_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql roles_mapping fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql tables_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql tables_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql procs_priv fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql servers fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql table_stats fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE mysql column_stats fetch NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE test marker insert NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE test marker insert NULL
|
|
wait/io/table/sql/handler handler.cc: TABLE test marker insert NULL
|
|
show status where Variable_name like 'performance_schema_%' and
|
|
Variable_name not like 'performance_schema_%_classes_lost';
|
|
Variable_name Value
|
|
Performance_schema_accounts_lost 0
|
|
Performance_schema_cond_instances_lost 0
|
|
Performance_schema_digest_lost 0
|
|
Performance_schema_file_handles_lost 0
|
|
Performance_schema_file_instances_lost 0
|
|
Performance_schema_hosts_lost 0
|
|
Performance_schema_locker_lost 0
|
|
Performance_schema_mutex_instances_lost 0
|
|
Performance_schema_rwlock_instances_lost 0
|
|
Performance_schema_session_connect_attrs_lost 0
|
|
Performance_schema_socket_instances_lost 0
|
|
Performance_schema_table_handles_lost 0
|
|
Performance_schema_table_instances_lost 0
|
|
Performance_schema_thread_instances_lost 0
|
|
Performance_schema_users_lost 0
|
|
truncate performance_schema.events_waits_history_long;
|
|
flush status;
|
|
update performance_schema.setup_consumers set enabled='NO';
|
|
truncate performance_schema.events_waits_history_long;
|
|
drop table test.marker;
|
|
flush status;
|
|
update performance_schema.setup_instruments set enabled='YES';
|
|
update performance_schema.setup_consumers set enabled='YES';
|
|
update performance_schema.setup_objects set enabled='NO'
|
|
where object_type='TABLE' and object_schema= 'mysql';
|