MXS-2494: Fix user loading queries for MariaDB 10.1+
The queries now properly check for the plugin.
This commit is contained in:
@ -61,12 +61,14 @@ const char* mariadb_102_users_query =
|
|||||||
" u.is_role, u.default_role"
|
" u.is_role, u.default_role"
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
||||||
" ON (u.user = d.user AND u.host = d.host) "
|
" ON (u.user = d.user AND u.host = d.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
" UNION "
|
" UNION "
|
||||||
" SELECT u.user, u.host, t.db, u.select_priv, "
|
" SELECT u.user, u.host, t.db, u.select_priv, "
|
||||||
" IF(u.password <> '', u.password, u.authentication_string), "
|
" IF(u.password <> '', u.password, u.authentication_string), "
|
||||||
" u.is_role, u.default_role "
|
" u.is_role, u.default_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
||||||
" ON (u.user = t.user AND u.host = t.host)"
|
" ON (u.user = t.user AND u.host = t.host)"
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
"), users AS ("
|
"), users AS ("
|
||||||
// Select the root row, the actual user
|
// Select the root row, the actual user
|
||||||
" SELECT t.user, t.host, t.db, t.select_priv, t.password, t.default_role AS role FROM t"
|
" SELECT t.user, t.host, t.db, t.select_priv, t.password, t.default_role AS role FROM t"
|
||||||
@ -89,10 +91,12 @@ const char* mariadb_users_query =
|
|||||||
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.is_role "
|
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.is_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
||||||
" ON (u.user = d.user AND u.host = d.host) "
|
" ON (u.user = d.user AND u.host = d.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
" UNION "
|
" UNION "
|
||||||
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.is_role "
|
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.is_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
||||||
" ON (u.user = t.user AND u.host = t.host) "
|
" ON (u.user = t.user AND u.host = t.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
") AS t "
|
") AS t "
|
||||||
// Discard any users that are roles
|
// Discard any users that are roles
|
||||||
"WHERE t.is_role <> 'Y' %s "
|
"WHERE t.is_role <> 'Y' %s "
|
||||||
@ -103,10 +107,12 @@ const char* mariadb_users_query =
|
|||||||
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.default_role "
|
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.default_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
||||||
" ON (u.user = d.user AND u.host = d.host) "
|
" ON (u.user = d.user AND u.host = d.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
" UNION "
|
" UNION "
|
||||||
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.default_role "
|
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.default_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
||||||
" ON (u.user = t.user AND u.host = t.host) "
|
" ON (u.user = t.user AND u.host = t.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
") AS t "
|
") AS t "
|
||||||
// Join it to the roles_mapping table to only have users with roles
|
// Join it to the roles_mapping table to only have users with roles
|
||||||
"JOIN mysql.roles_mapping AS r "
|
"JOIN mysql.roles_mapping AS r "
|
||||||
@ -117,10 +123,12 @@ const char* mariadb_users_query =
|
|||||||
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.is_role "
|
" SELECT u.user, u.host, d.db, u.select_priv, u.password AS password, u.is_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
" FROM mysql.user AS u LEFT JOIN mysql.db AS d "
|
||||||
" ON (u.user = d.user AND u.host = d.host) "
|
" ON (u.user = d.user AND u.host = d.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
" UNION "
|
" UNION "
|
||||||
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.is_role "
|
" SELECT u.user, u.host, t.db, u.select_priv, u.password AS password, u.is_role "
|
||||||
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
" FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t "
|
||||||
" ON (u.user = t.user AND u.host = t.host) "
|
" ON (u.user = t.user AND u.host = t.host) "
|
||||||
|
" WHERE u.plugin IN ('', 'mysql_native_password') "
|
||||||
") AS u "
|
") AS u "
|
||||||
"ON (u.user = r.role AND u.is_role = 'Y') "
|
"ON (u.user = r.role AND u.is_role = 'Y') "
|
||||||
// We only care about users that have a default role assigned
|
// We only care about users that have a default role assigned
|
||||||
|
Reference in New Issue
Block a user