mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-35617: DROP USER should leave no active session for that user
DROP USER looks for sessions by the do-be-dropped user and if found: * fails with ER_CANNOT_USER in Oracle mode * continues with ER_ACTIVE_CONNECTIONS_FOR_USER_TO_DROP warning otherwise Every user being dropped is marked with flag that disallow establishing a new connections on behalf this user.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
--source include/not_ubsan.inc
|
||||
--source include/count_sessions.inc
|
||||
|
||||
let $REGEX_VERSION_ID=/$mysql_get_server_version/VERSION_ID/;
|
||||
let $REGEX_PASSWORD_LAST_CHANGED=/password_last_changed": [0-9]*/password_last_changed": #/;
|
||||
@@ -48,6 +49,7 @@ show create user mysqltest1;
|
||||
--echo # name does not match, password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -68,6 +70,7 @@ show create user mysqltest1;
|
||||
--echo # name does not match, password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -88,6 +91,7 @@ show create user mysqltest1;
|
||||
--echo # name does not match, password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -108,6 +112,7 @@ show create user mysqltest1;
|
||||
--echo # name does not match, password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -130,6 +135,7 @@ show create user mysqltest1;
|
||||
--echo # name does not match, password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -146,6 +152,7 @@ show create user mysqltest1;
|
||||
--echo # password bad = failure
|
||||
--error 1
|
||||
--exec $try_auth -u mysqltest1 -pbad
|
||||
--source include/wait_until_count_sessions.inc
|
||||
drop user mysqltest1;
|
||||
|
||||
#
|
||||
@@ -198,6 +205,7 @@ show create user mysqltest1;
|
||||
--echo # SET PASSWORD helps
|
||||
set password for mysqltest1 = password('bla');
|
||||
--exec $try_auth -u mysqltest1 -pbla
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--replace_result $dreplace "drop user 'USER'"
|
||||
eval $dreplace, mysqltest1;
|
||||
|
||||
@@ -219,6 +227,7 @@ show create user mysqltest1;
|
||||
--exec $try_auth -u mysqltest1 -pgood --plugin-dir=$plugindir/no
|
||||
--echo # no plugin, second password works = ok
|
||||
--exec $try_auth -u mysqltest1 -pworks --plugin-dir=$plugindir/no
|
||||
--source include/wait_until_count_sessions.inc
|
||||
drop user mysqltest1;
|
||||
|
||||
uninstall soname 'auth_ed25519';
|
||||
|
@@ -1,5 +1,6 @@
|
||||
let $PAM_PLUGIN_VERSION= $AUTH_PAM_SO;
|
||||
--source pam_init.inc
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/pam_good.txt
|
||||
not very secret challenge
|
||||
@@ -83,6 +84,7 @@ alter user test_pam password expire;
|
||||
--error 1
|
||||
--exec $MYSQL_TEST -u test_pam -pgoodpassword < $MYSQLTEST_VARDIR/tmp/pam_good2.txt
|
||||
|
||||
--source include/wait_until_count_sessions.inc
|
||||
drop user test_pam;
|
||||
drop user pam_test;
|
||||
create user PAM_TEST identified via pam using 'mariadb_mtr';
|
||||
@@ -104,6 +106,7 @@ set global pam_winbind_workaround=1;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/pam_good2.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/pam_bad.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/pam_ugly.txt
|
||||
--source include/wait_until_count_sessions.inc
|
||||
drop user PAM_TEST;
|
||||
|
||||
--echo #
|
||||
@@ -121,6 +124,7 @@ show create user;
|
||||
EOF
|
||||
--exec $MYSQL_TEST -u pam_test < $MYSQLTEST_VARDIR/tmp/setpwd.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/setpwd.txt
|
||||
--source include/wait_until_count_sessions.inc
|
||||
drop user pam_test;
|
||||
|
||||
let $count_sessions= 1;
|
||||
|
@@ -1,5 +1,6 @@
|
||||
source include/platform.inc;
|
||||
source include/not_embedded.inc;
|
||||
source include/count_sessions.inc;
|
||||
|
||||
if (`select count(*) = 0 from information_schema.plugins where plugin_name = 'parsec'`)
|
||||
{
|
||||
@@ -41,6 +42,7 @@ if ($MTR_COMBINATION_WIN) {
|
||||
--echo # mysql -utest1 -ppwd --ssl-verify-server-cert -e "select test.have_ssl()"
|
||||
--exec $MYSQL --protocol tcp $host -utest1 -ppwd --ssl-verify-server-cert -e "select test.have_ssl()" 2>&1
|
||||
|
||||
source include/wait_until_count_sessions.inc;
|
||||
drop function have_ssl;
|
||||
drop user test1@'%';
|
||||
|
||||
@@ -57,4 +59,5 @@ disconnect con4;
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect con5, localhost, test2, "wrong_pwd";
|
||||
connection default;
|
||||
source include/wait_until_count_sessions.inc;
|
||||
drop user test2@'%';
|
||||
|
Reference in New Issue
Block a user