1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00

MDEV#6266: Changing password fails on galera cluster

Added a check to skip ER_PASSWORD_ANONYMOUS_USER in
case the SET PASSWORD was executed by wsrep applier
thread.
This commit is contained in:
Nirbhay Choubey
2014-05-28 00:46:21 -04:00
parent 8d37bd48c7
commit 7e85cfb50f
3 changed files with 50 additions and 1 deletions

View File

@@ -0,0 +1,17 @@
#
# MDEV#6266: Changing password fails on galera cluster
#
# On node_1
GRANT SELECT ON *.* TO 'user_6266'@'localhost' IDENTIFIED BY 'pass';
# Now, try changing password for 'user_6266'. This command should also
# execute successfully on the other node.
SET PASSWORD FOR 'user_6266'@'localhost' = PASSWORD('newpass');
# On node_2
SELECT user FROM mysql.user WHERE user='user_6266';
user
user_6266
DROP USER 'user_6266'@'localhost';
# End of test

View File

@@ -0,0 +1,25 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
--echo #
--echo # MDEV#6266: Changing password fails on galera cluster
--echo #
--echo
--echo # On node_1
--connection node_1
GRANT SELECT ON *.* TO 'user_6266'@'localhost' IDENTIFIED BY 'pass';
--echo
--echo # Now, try changing password for 'user_6266'. This command should also
--echo # execute successfully on the other node.
SET PASSWORD FOR 'user_6266'@'localhost' = PASSWORD('newpass');
--echo
--echo # On node_2
--connection node_2
SELECT user FROM mysql.user WHERE user='user_6266';
# cleanup
DROP USER 'user_6266'@'localhost';
--source include/galera_end.inc
--echo # End of test

View File

@@ -2512,7 +2512,13 @@ int check_change_password(THD *thd, const char *host, const char *user,
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables");
return(1);
}
if (!thd->slave_thread && !thd->security_ctx->priv_user[0])
#ifdef WITH_WSREP
if ((!WSREP(thd) || !thd->wsrep_applier) &&
!thd->slave_thread && !thd->security_ctx->user[0])
#else
if (!thd->slave_thread && !thd->security_ctx->user[0])
#endif /* WITH_WSREP */
{
my_message(ER_PASSWORD_ANONYMOUS_USER, ER(ER_PASSWORD_ANONYMOUS_USER),
MYF(0));
@@ -2523,6 +2529,7 @@ int check_change_password(THD *thd, const char *host, const char *user,
my_error(ER_PASSWORD_NO_MATCH, MYF(0));
return 1;
}
if (!thd->slave_thread &&
#ifdef WITH_WSREP
(!WSREP(thd) || !thd->wsrep_applier) &&