1
0
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:
Dmitry Shulga
2025-05-28 00:05:05 +07:00
parent e3d9369774
commit ce7ab467db
51 changed files with 410 additions and 6 deletions

View File

@@ -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';