Changed queries to more closely match actual queries.
This commit is contained in:
@ -2376,46 +2376,43 @@ void valid_service_permissions(SERVICE* service)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mysql_query(mysql,"select * from mysql.user limit 1") != 0)
|
if(mysql_query(mysql,"SELECT user, host, password,Select_priv FROM mysql.user limit 1") != 0)
|
||||||
{
|
{
|
||||||
skygw_log_write(LE,"[%s] Error: Failed to query from mysql.user table. MySQL error message: %s",service->name,mysql_error(mysql));
|
if(mysql_errno(mysql) == ER_TABLEACCESS_DENIED_ERROR)
|
||||||
mysql_close(mysql);
|
{
|
||||||
|
skygw_log_write(LE,"[%s] Error: User '%s' is missing SELECT privileges on mysql.user table. MySQL error message: %s",
|
||||||
|
service->name,user,mysql_error(mysql));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skygw_log_write(LE,"[%s] Error: Failed to query from mysql.user table. MySQL error message: %s",
|
||||||
|
service->name,mysql_error(mysql));
|
||||||
|
}
|
||||||
|
mysql_close(mysql);
|
||||||
free(dpasswd);
|
free(dpasswd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_free_result(mysql_use_result(mysql));
|
mysql_free_result(mysql_use_result(mysql));
|
||||||
|
|
||||||
if(mysql_query(mysql,"select * from mysql.db limit 1") != 0)
|
if(mysql_query(mysql,"SELECT user, host, db FROM mysql.db limit 1") != 0)
|
||||||
{
|
{
|
||||||
skygw_log_write(LM|LE,"The user '%s' for service '%s' does not have"
|
if(mysql_errno(mysql) == ER_TABLEACCESS_DENIED_ERROR)
|
||||||
" SELECT permissions on the mysql.db table. MaxScale will not use the database in authentication. MySQL error message: %s",
|
{
|
||||||
user,service->name,mysql_error(mysql));
|
skygw_log_write(LE,"[%s] Error: User '%s' is missing SELECT privileges on mysql.db table. MySQL error message: %s",
|
||||||
mysql_close(mysql);
|
service->name,user,mysql_error(mysql));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skygw_log_write(LE,"[%s] Error: Failed to query from mysql.user table. MySQL error message: %s",
|
||||||
|
service->name,mysql_error(mysql));
|
||||||
|
}
|
||||||
|
mysql_close(mysql);
|
||||||
free(dpasswd);
|
free(dpasswd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
mysql_free_result(mysql_use_result(mysql));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mysql_query(mysql,LOAD_MYSQL_DATABASE_NAMES) != 0)
|
|
||||||
{
|
|
||||||
skygw_log_write(LE,"[%s] Error: Failed to query for SHOW DATABASES permissions. MySQL error message: %s.",service->name,mysql_error(mysql));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
res = mysql_use_result(mysql);
|
|
||||||
if(mysql_num_rows(res) == 0)
|
|
||||||
{
|
|
||||||
skygw_log_write(LM|LE,"The user '%s' for service '%s' does not have"
|
|
||||||
" SHOW DATABASES permissions. MaxScale will not use the database in authentication.",
|
|
||||||
user,service->name);
|
|
||||||
}
|
|
||||||
mysql_free_result(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
mysql_free_result(mysql_use_result(mysql));
|
||||||
mysql_close(mysql);
|
mysql_close(mysql);
|
||||||
free(dpasswd);
|
free(dpasswd);
|
||||||
}
|
}
|
@ -41,6 +41,7 @@
|
|||||||
#include <skygw_utils.h>
|
#include <skygw_utils.h>
|
||||||
#include <log_manager.h>
|
#include <log_manager.h>
|
||||||
#include <secrets.h>
|
#include <secrets.h>
|
||||||
|
#include <mysql/mysqld_error.h>
|
||||||
|
|
||||||
/** Defined in log_manager.cc */
|
/** Defined in log_manager.cc */
|
||||||
extern int lm_enabled_logfiles_bitmask;
|
extern int lm_enabled_logfiles_bitmask;
|
||||||
@ -496,7 +497,16 @@ void valid_monitor_permissions(MONITOR* monitor)
|
|||||||
|
|
||||||
if(mysql_query(mysql,"show slave status") != 0)
|
if(mysql_query(mysql,"show slave status") != 0)
|
||||||
{
|
{
|
||||||
skygw_log_write(LE,"[%s] Error: Monitor failed to query for slave status. MySQL error message: %s",monitor->name,mysql_error(mysql));
|
if(mysql_errno(mysql) == ER_SPECIFIC_ACCESS_DENIED_ERROR)
|
||||||
|
{
|
||||||
|
skygw_log_write(LE,"[%s] Error: User '%s' is missing REPLICATION CLIENT privileges. MySQL error message: %s",
|
||||||
|
monitor->name,mysql_error(mysql));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skygw_log_write(LE,"[%s] Error: Monitor failed to query for slave status. MySQL error message: %s",
|
||||||
|
monitor->name,mysql_error(mysql));
|
||||||
|
}
|
||||||
mysql_close(mysql);
|
mysql_close(mysql);
|
||||||
free(dpasswd);
|
free(dpasswd);
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user