1
#======================================================================
4
# test cases for TRIGGER privilege on db, table and column level
5
#======================================================================
7
--disable_abort_on_error
9
###########################################
10
################ Section 3.5.3 ############
11
# Check for the definer of Triggers #
12
###########################################
14
# General setup to be used in all testcases
15
let $message= ######### Testcase for definer: ########;
16
--source include/show_msg.inc
19
drop database if exists priv_db;
21
create database priv_db;
23
eval create table t1 (f1 char(20)) engine= $engine_type;
25
create User test_yesprivs@localhost;
26
set password for test_yesprivs@localhost = password('PWD');
28
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
30
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
31
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
33
# create trigger with not existing definer shall deliver a warning:
37
create definer=not_ex_user@localhost trigger trg1_0
38
before INSERT on t1 for each row
39
set new.f1 = 'trig 1_0-yes';
41
# create trigger with definer test_yesprivs@localhost->succeed:
42
create definer=test_yesprivs@localhost trigger trg1_0
43
before INSERT on t1 for each row
44
set new.f1 = 'trig 1_0-yes';
45
grant select, insert, update
46
on priv_db.t1 to test_yesprivs@localhost;
51
# user hasn't trigger privilege->fail:
52
--error ER_TABLEACCESS_DENIED_ERROR
53
insert into t1 (f1) values ('insert-no');
54
select f1 from t1 order by f1;
55
--error ER_TABLEACCESS_DENIED_ERROR
60
grant select, insert, update ,trigger
61
on priv_db.t1 to test_yesprivs@localhost;
62
show grants for test_yesprivs@localhost;
66
# user now has trigger privilege->succeed:
67
insert into t1 (f1) values ('insert-no');
68
select f1 from t1 order by f1;
70
# user has not super privilege->fail:
71
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
72
create definer=not_ex_user@localhost trigger trg1_0
73
before INSERT on t1 for each row
74
set new.f1 = 'trig 1_0-yes';
75
# shall always succeed:
76
create definer=current_user trigger trg1_1
77
before INSERT on t1 for each row
78
set new.f1 = 'trig 1_1-yes';
79
insert into t1 (f1) values ('insert-no');
80
select f1 from t1 order by f1;
81
# shall always succeed:
82
create definer=test_yesprivs@localhost trigger trg1_2
83
before UPDATE on t1 for each row
84
set new.f1 = 'trig 1_2-yes';
85
update t1 set f1 = 'update-yes' where f1 like '%trig%';
86
select f1 from t1 order by f1;
90
grant trigger on priv_db.* to test_yesprivs@localhost
93
# user has not super privilege->fail:
97
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
98
create definer=not_ex_user@localhost trigger trg1_3
99
after UPDATE on t1 for each row
100
set @var1 = 'trig 1_3-yes';
107
disconnect yes_privs;
116
drop database if exists priv_db;
117
drop user test_yesprivs@localhost;