Мне нужно перечислить всех пользователей, у которых есть доступ к DML на сервере, определенном на уровне схемы, таблицы или столбца.У меня есть следующий запрос.Есть ли более элегантное решение для этого?
select host,
db, user,
'*' tables,
'*' columns,
'schema' priv_defined_at
from mysql.db d
where (Insert_priv = 'Y'
or Update_priv = 'Y'
or Delete_priv = 'Y'
or Create_priv = 'Y'
or Grant_priv = 'Y'
or Index_priv = 'Y'
or Alter_priv = 'Y'
or Create_tmp_table_priv = 'Y'
or Create_view_priv = 'Y'
or Create_routine_priv = 'Y'
or Alter_routine_priv = 'Y'
or Event_priv = 'Y'
or Trigger_priv = 'Y')
union all
select host,
db,
user,
table_name,
'*' columns,
'table' defined_at
from mysql.tables_priv
where (Table_priv in ('Insert','Update','Delete','Create','Drop','Index','Alter','Create View','Trigger'))
union all
(select host,
db,
user,
table_name,
group_concat(column_name separator ', '),
'column' defined_at
from mysql.columns_priv
where (Column_priv like '%insert%'
or Column_priv like '%delete%'
or Column_priv like '%update%'
or Column_priv like '%alter%')
group by 1, 2, 3, 4)
order by user;