polardbxengine/mysql-test/suite/xengine_auth_sec/t/atomic_rename_user.test

97 lines
3.4 KiB
Plaintext

--source include/have_log_bin.inc
--source include/save_binlog_position.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--echo # -----------------------------------------------------------------------
--echo # Begin : Tests for RENAME USER
CREATE USER userX, userY, userZ;
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--source include/save_binlog_position.inc
--echo # Modify multiple users
RENAME USER userX TO userA, userY TO userB, userZ TO userC;
--echo # Must show userA, userB, userC
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--let $event= !Q(RENAME USER.*userX.TO.*userA.*,.*userY.*TO.*userB.*,.*userZ.*TO.*userC.*)
--source ../include/auth_sec_assert_binlog_events.inc
--source include/save_binlog_position.inc
--echo # Try renaming a non-existent user
--error ER_CANNOT_USER
RENAME USER userA TO userX, user_ne1 TO user_ne2, userC TO userZ;
--echo # Must show userA, userB, userC
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--let $invert= 1
--let $event= !Q(RENAME USER.*userA.*TO.*userX.*,.*user_ne1.*TO.*user_ne2.*,.*userC.*TO.*userZ.*)
--source ../include/auth_sec_assert_binlog_events.inc
--let $invert= 0
--echo # Insert an entry in mysql.user table but do not execute FLUSH PRIVILEGES
CREATE TABLE mysql.tmp_user LIKE mysql.user;
INSERT INTO mysql.tmp_user SELECT * FROM mysql.user WHERE user LIKE 'userC';
UPDATE mysql.tmp_user SET user='userZ' WHERE user LIKE 'userC';
INSERT INTO mysql.user SELECT * FROM mysql.tmp_user;
DROP TABLE mysql.tmp_user;
--source include/save_binlog_position.inc
--echo # Though userX is not present in cache, RENAME should check in mysql.user
--echo # table for the presence of an entry which may create problem while
--echo # renaming users.
--error ER_CANNOT_USER
RENAME USER userA TO userX, userB TO userY, userC TO userZ;
--echo # Must show userA, userB, userC and userZ
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--let $invert= 1
--let $event= !Q(RENAME USER.*userA.*TO.*userX.*,.*userB.*TO.*userY.*,.*userC.*TO.*userZ.*)
--source ../include/auth_sec_assert_binlog_events.inc
--let $invert= 0
FLUSH PRIVILEGES;
--source include/save_binlog_position.inc
--echo # Try renaming two different user and use same user as target
--error ER_CANNOT_USER
RENAME USER userA TO userX, userB TO userX;
--echo # Must show userA, userB, userC
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--let $invert= 1
--let $event= !Q(RENAME USER.*userA.*TO.*userX.*,.*userB.*TO.*userX.*)
--source ../include/auth_sec_assert_binlog_events.inc
--let $invert= 0
--echo # This should succeed
RENAME USER userA TO userX, userB TO userA, userZ TO userB, userC TO userZ;
--echo # Must show userA, userB, userX and userZ
SELECT user, authentication_string FROM mysql.user WHERE user like 'user%';
--let $event= !Q(RENAME USER.*userA.*TO.*userX.*,.*userB.*TO.*userA.*,.*userZ.*TO.*userB.*,.*userC.*TO.*userZ.*)
--source ../include/auth_sec_assert_binlog_events.inc
--source include/save_binlog_position.inc
DROP USER userA, userB, userX, userZ;
--source include/save_binlog_position.inc
--echo # End : Tests for RENAME USER
--echo # -----------------------------------------------------------------------
# Wait till we reached the initial number of concurrent sessions
--source include/wait_until_count_sessions.inc