Commit 7e85cfb5 authored by Nirbhay Choubey's avatar Nirbhay Choubey

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.
parent 8d37bd48
#
# 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
--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
...@@ -2512,7 +2512,13 @@ int check_change_password(THD *thd, const char *host, const char *user, ...@@ -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"); my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables");
return(1); 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), my_message(ER_PASSWORD_ANONYMOUS_USER, ER(ER_PASSWORD_ANONYMOUS_USER),
MYF(0)); MYF(0));
...@@ -2523,6 +2529,7 @@ int check_change_password(THD *thd, const char *host, const char *user, ...@@ -2523,6 +2529,7 @@ int check_change_password(THD *thd, const char *host, const char *user,
my_error(ER_PASSWORD_NO_MATCH, MYF(0)); my_error(ER_PASSWORD_NO_MATCH, MYF(0));
return 1; return 1;
} }
if (!thd->slave_thread && if (!thd->slave_thread &&
#ifdef WITH_WSREP #ifdef WITH_WSREP
(!WSREP(thd) || !thd->wsrep_applier) && (!WSREP(thd) || !thd->wsrep_applier) &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment