SELECT t.user, t.host, t.db, t.select_priv, t.password FROM
|
(
|
SELECT u.user, u.host, d.db, u.select_priv, u.password AS password
|
FROM mysql.user AS u LEFT JOIN mysql.db AS d
|
ON (u.user = d.user AND u.host = d.host)
|
UNION
|
SELECT u.user, u.host, t.db, u.select_priv, u.password AS password
|
FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t
|
ON (u.user = t.user AND u.host = t.host)
|
WHERE u.is_role <> 'Y'
|
) AS t
|
WHERE (t.user, t.host) NOT IN (SELECT user, host FROM mysql.roles_mapping)
|
UNION
|
SELECT r.user, r.host, u.db, u.select_priv, t.password FROM
|
(
|
SELECT u.user, u.host, d.db, u.select_priv, u.password AS password
|
FROM mysql.user AS u LEFT JOIN mysql.db AS d
|
ON (u.user = d.user AND u.host = d.host)
|
UNION
|
SELECT u.user, u.host, t.db, u.select_priv, u.password AS password
|
FROM mysql.user AS u LEFT JOIN mysql.tables_priv AS t
|
ON (u.user = t.user AND u.host = t.host)
|
) AS t
|
JOIN mysql.roles_mapping AS r
|
ON (r.user = t.user AND r.host = t.host)
|
JOIN
|
(
|
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
|
ON (u.user = d.user AND u.host = d.host)
|
UNION
|
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
|
ON (u.user = t.user AND u.host = t.host)
|
) AS u
|
ON (u.user = r.role AND u.is_role = 'Y');
|