mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-5999 MySQL Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY - REQUIRES FLUSH PRIVILEGES
use update_hostname() to update the hostname. test case comes from commit 0abdeed1d6d Author: gopal.shankar@oracle.com <> Date: Thu Mar 29 00:20:54 2012 +0530 Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY - REQUIRES FLUSH PRIVILEGES
This commit is contained in:
@ -2560,3 +2560,29 @@ Grants for mysqltest_u1@%
|
||||
GRANT USAGE ON *.* TO 'mysqltest_u1'@'%'
|
||||
drop database mysqltest_db1;
|
||||
drop user mysqltest_u1;
|
||||
#
|
||||
# Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY -
|
||||
# REQUIRES FLUSH PRIVILEGES
|
||||
#
|
||||
CREATE USER foo@'127.0.0.1';
|
||||
GRANT ALL ON *.* TO foo@'127.0.0.1';
|
||||
# First attempt, should connect successfully
|
||||
SELECT user(), current_user();
|
||||
user() current_user()
|
||||
foo@localhost foo@127.0.0.1
|
||||
# Rename the user
|
||||
RENAME USER foo@'127.0.0.1' to foo@'127.0.0.0/255.0.0.0';
|
||||
# Second attempt, should connect successfully as its valid mask
|
||||
# This was failing without fix
|
||||
SELECT user(), current_user();
|
||||
user() current_user()
|
||||
foo@localhost foo@127.0.0.0/255.0.0.0
|
||||
# Rename the user back to original
|
||||
RENAME USER foo@'127.0.0.0/255.0.0.0' to foo@'127.0.0.1';
|
||||
# Third attempt, should connect successfully
|
||||
SELECT user(), current_user();
|
||||
user() current_user()
|
||||
foo@localhost foo@127.0.0.1
|
||||
# Clean-up
|
||||
DROP USER foo@'127.0.0.1';
|
||||
# End of Bug#12766319
|
||||
|
@ -2211,3 +2211,43 @@ grant select on mysqltest_db1.t1 to mysqltest_u1;
|
||||
show grants for mysqltest_u1;
|
||||
drop database mysqltest_db1;
|
||||
drop user mysqltest_u1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY -
|
||||
--echo # REQUIRES FLUSH PRIVILEGES
|
||||
--echo #
|
||||
|
||||
CREATE USER foo@'127.0.0.1';
|
||||
GRANT ALL ON *.* TO foo@'127.0.0.1';
|
||||
|
||||
--echo # First attempt, should connect successfully
|
||||
connect (conn1, '127.0.0.1', foo,,test);
|
||||
SELECT user(), current_user();
|
||||
|
||||
--echo # Rename the user
|
||||
RENAME USER foo@'127.0.0.1' to foo@'127.0.0.0/255.0.0.0';
|
||||
|
||||
--echo # Second attempt, should connect successfully as its valid mask
|
||||
--echo # This was failing without fix
|
||||
connect (conn2, '127.0.0.1', foo,,test);
|
||||
SELECT user(), current_user();
|
||||
|
||||
--echo # Rename the user back to original
|
||||
RENAME USER foo@'127.0.0.0/255.0.0.0' to foo@'127.0.0.1';
|
||||
|
||||
--echo # Third attempt, should connect successfully
|
||||
connect (conn3, '127.0.0.1', foo,,test);
|
||||
SELECT user(), current_user();
|
||||
|
||||
--echo # Clean-up
|
||||
connection default;
|
||||
disconnect conn1;
|
||||
disconnect conn2;
|
||||
disconnect conn3;
|
||||
DROP USER foo@'127.0.0.1';
|
||||
|
||||
--echo # End of Bug#12766319
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
@ -6285,12 +6285,12 @@ static int handle_grant_struct(enum enum_acl_lists struct_no, bool drop,
|
||||
switch ( struct_no ) {
|
||||
case USER_ACL:
|
||||
acl_user->user= strdup_root(&mem, user_to->user.str);
|
||||
acl_user->host.hostname= strdup_root(&mem, user_to->host.str);
|
||||
update_hostname(&acl_user->host, strdup_root(&mem, user_to->host.str));
|
||||
break;
|
||||
|
||||
case DB_ACL:
|
||||
acl_db->user= strdup_root(&mem, user_to->user.str);
|
||||
acl_db->host.hostname= strdup_root(&mem, user_to->host.str);
|
||||
update_hostname(&acl_db->host, strdup_root(&mem, user_to->host.str));
|
||||
break;
|
||||
|
||||
case COLUMN_PRIVILEGES_HASH:
|
||||
|
Reference in New Issue
Block a user