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