MXS-3410 Drop anonymous users also in Xpand

As Xpand does not have a mysql.user table but a system.users
table, we need to arrange things so that the query used for
selecting annymous users can be different depending on the cluster.
This commit is contained in:
Johan Wikman
2021-02-19 14:55:05 +02:00
parent f782a538cc
commit 38e623df9c
4 changed files with 21 additions and 4 deletions

View File

@ -535,8 +535,14 @@ public:
*/ */
std::string cnf_server_name; std::string cnf_server_name;
private: protected:
/**
* @returns SELECT that returns anonymous users in such a way that each returned row
* can directly be given as argument to DROP USER.
*/
virtual std::string anonymous_users_query() const;
private:
bool check_master_node(MYSQL* conn); bool check_master_node(MYSQL* conn);
bool bad_slave_thread_status(MYSQL* conn, const char* field, int node); bool bad_slave_thread_status(MYSQL* conn, const char* field, int node);
}; };

View File

@ -59,4 +59,7 @@ public:
std::string block_command(int node) const override; std::string block_command(int node) const override;
std::string unblock_command(int node) const override; std::string unblock_command(int node) const override;
private:
std::string anonymous_users_query() const override;
}; };

View File

@ -1028,6 +1028,11 @@ std::vector<int> Mariadb_nodes::get_all_server_ids()
return rval; return rval;
} }
std::string Mariadb_nodes::anonymous_users_query() const
{
return "SELECT CONCAT('\\'', user, '\\'@\\'', host, '\\'') FROM mysql.user WHERE user = ''";
}
bool Mariadb_nodes::prepare_for_test(MYSQL* conn) bool Mariadb_nodes::prepare_for_test(MYSQL* conn)
{ {
int local_result = 0; int local_result = 0;
@ -1047,9 +1052,7 @@ bool Mariadb_nodes::prepare_for_test(MYSQL* conn)
local_result++; local_result++;
} }
if (mysql_query(conn, if (mysql_query(conn, anonymous_users_query().c_str()) == 0)
"SELECT CONCAT('\\'', user, '\\'@\\'', host, '\\'') FROM mysql.user WHERE user = ''")
== 0)
{ {
MYSQL_RES* res = mysql_store_result(conn); MYSQL_RES* res = mysql_store_result(conn);

View File

@ -275,3 +275,8 @@ std::string Xpand_nodes::unblock_command(int node) const
return command; return command;
} }
std::string Xpand_nodes::anonymous_users_query() const
{
return "SELECT CONCAT('\\'', user, '\\'@\\'', host, '\\'') FROM system.users WHERE user = ''";
}