mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
f13b80af39
the idea of main.failed_auth_unixsocket was to have existing user account (root) authenticate with unix_socket, then login with non-existent user name, Non-existent user name forces the server to perform the authentication in the name of some random existing user. But it must still fail at the end, as the user name is wrong. In 10.4 a second predefined user was added, mariadb.sys, so root is not the only user in mysql.global_priv and unix_socket auth must be forced for all existing user accounts, because we cannot know what user account the server will randomly pick for non-existing user auth.
29 lines
955 B
Text
29 lines
955 B
Text
--source include/have_unix_socket.inc
|
|
|
|
#
|
|
# MDEV-3909 remote user enumeration
|
|
# unix_socket tests
|
|
#
|
|
create table global_priv_backup select * from mysql.global_priv;
|
|
update mysql.global_priv set priv=json_insert(priv, '$.plugin', 'unix_socket');
|
|
delete from mysql.global_priv where user != 'root';
|
|
flush privileges;
|
|
|
|
# Make sure that the replace works, even if $USER is 'user' or something else
|
|
# that matches other parts of the error message.
|
|
let $replace=Access denied for user '$USER';
|
|
|
|
--echo connect(localhost,USER,,test,MASTER_PORT,MASTER_SOCKET);
|
|
--replace_result $replace "Access denied for user 'USER'"
|
|
--disable_query_log
|
|
--error ER_ACCESS_DENIED_NO_PASSWORD_ERROR
|
|
connect (fail,localhost,$USER);
|
|
--enable_query_log
|
|
|
|
--replace_result $replace "Access denied for user 'USER'"
|
|
--error ER_ACCESS_DENIED_NO_PASSWORD_ERROR
|
|
change_user $USER;
|
|
|
|
replace mysql.global_priv select * from global_priv_backup;
|
|
flush privileges;
|
|
drop table global_priv_backup;
|