List users of a database


DROP PROCEDURE IF EXISTS ListDbUsers;
DELIMITER |
CREATE PROCEDURE ListDbUsers( dbname CHAR(64) )
  SELECT host,user
  FROM mysql.user
  WHERE Select_priv = 'Y' 
       OR Insert_priv = 'Y' 
     OR Update_priv = 'Y' 
     OR Delete_priv = 'Y' 
     OR Create_priv = 'Y' 
     OR Drop_priv = 'Y' 
     OR Reload_priv = 'Y' 
     OR Shutdown_priv = 'Y' 
     OR Process_priv = 'Y' 
     OR File_priv = 'Y' 
     OR Grant_priv = 'Y' 
     OR References_priv = 'Y' 
     OR Index_priv = 'Y' 
     OR Alter_priv = 'Y' 
     OR Show_db_priv = 'Y' 
     OR Super_priv = 'Y' 
     OR Create_tmp_table_priv = 'Y' 
     OR Lock_tables_priv = 'Y' 
     OR Execute_priv = 'Y' 
     OR Repl_slave_priv = 'Y' 
     OR Repl_client_priv = 'Y' 
     OR Create_view_priv = 'Y' 
     OR Show_view_priv = 'Y' 
     OR Create_routine_priv = 'Y' 
     OR Alter_routine_priv = 'Y' 
     OR Create_user_priv = 'Y' 
     OR Event_priv = 'Y' 
     OR Trigger_priv = 'Y' 
  UNION
  SELECT host,user
  FROM mysql.db
  WHERE db=dbname
    AND (
     Select_priv = 'Y' 
     OR Insert_priv = 'Y' 
     OR Update_priv = 'Y' 
     OR Delete_priv = 'Y' 
     OR Create_priv = 'Y' 
     OR Drop_priv = 'Y' 
     OR Grant_priv = 'Y' 
     OR References_priv = 'Y' 
     OR Index_priv = 'Y' 
     OR Alter_priv = 'Y' 
     OR Create_tmp_table_priv = 'Y' 
     OR Lock_tables_priv = 'Y' 
     OR Create_view_priv = 'Y' 
     OR Show_view_priv = 'Y' 
     OR Create_routine_priv = 'Y' 
     OR Alter_routine_priv = 'Y' 
     OR Execute_priv = 'Y' 
     OR Event_priv = 'Y' 
     OR Trigger_priv = 'Y' 
  )
  UNION
  SELECT host,user
  FROM mysql.tables_priv
  WHERE db=dbname
  UNION
  SELECT host,user
  FROM mysql.columns_priv
  WHERE db=dbname;
|
DELIMITER ;
CALL ListDbUsers( 'test' );