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:
@ -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);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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 = ''";
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user