DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; DROP USER 'user4'@'localhost'; CREATE USER 'user4'@'localhost'; GRANT TRIGGER ON *.* TO 'user4'@'localhost'; USE db_datadict; CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT); CREATE TRIGGER trg1 BEFORE INSERT ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before; # Establish connection user4 (user=user4) SHOW GRANTS FOR 'user4'@'localhost'; Grants for user4@localhost GRANT TRIGGER ON *.* TO 'user4'@'localhost' SHOW TABLES FROM db_datadict; Tables_in_db_datadict t1 SHOW CREATE TABLE db_datadict.t1; ERROR 42000: SELECT command denied to user 'user4'@'localhost' for table 't1' SHOW COLUMNS FROM db_datadict.t1; ERROR 42000: SELECT command denied to user 'user4'@'localhost' for table 't1' SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema = 'db_datadict'; table_schema table_name db_datadict t1 SELECT table_schema,table_name,column_name FROM information_schema.columns WHERE table_schema = 'db_datadict'; table_schema table_name column_name SELECT f1 FROM db_datadict.t1; ERROR 42000: SELECT command denied to user 'user4'@'localhost' for table 't1' SHOW TRIGGERS LIKE 't1'; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation SELECT event_object_schema,event_object_table,action_statement FROM information_schema.triggers WHERE trigger_name = 'trg1'; event_object_schema event_object_table action_statement # Switch to connection default and close connections user1 - user4 DROP USER 'user4'@'localhost'; DROP DATABASE db_datadict;