~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#======================================================================
 
2
#
 
3
# Trigger Tests
 
4
# test cases for TRIGGER privilege on db, table and column level
 
5
#======================================================================
 
6
 
 
7
--disable_abort_on_error
 
8
 
 
9
############################################
 
10
################ Section 3.5.3 #############
 
11
# basic tests for the db level of Triggers #
 
12
############################################
 
13
 
 
14
# General setup to be used in all testcases
 
15
let $message= Testcase for db level:;
 
16
--source include/show_msg.inc
 
17
 
 
18
        --disable_warnings
 
19
        drop database if exists priv_db;
 
20
        drop database if exists no_priv_db;
 
21
        --enable_warnings
 
22
        create database priv_db;
 
23
        create database no_priv_db;
 
24
        use priv_db;
 
25
        eval create table t1 (f1 char(20)) engine= $engine_type;
 
26
 
 
27
        create User test_yesprivs@localhost;
 
28
        set password for test_yesprivs@localhost = password('PWD');
 
29
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
 
30
        grant select on priv_db.* to test_yesprivs@localhost;
 
31
        show grants for test_yesprivs@localhost;
 
32
 
 
33
        create User test_noprivs@localhost;
 
34
        set password for test_noprivs@localhost = password('PWD');
 
35
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
 
36
        grant select,insert on priv_db.* to test_noprivs@localhost;
 
37
        show grants for test_noprivs@localhost;
 
38
 
 
39
# no trigger privilege->create trigger must fail:
 
40
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
41
        connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
42
let $message= no trigger privilege on db level for create:;
 
43
--source include/show_msg.inc
 
44
        use priv_db;
 
45
        --error 1142
 
46
        create trigger trg1_1 before INSERT on t1 for each row
 
47
                set new.f1 = 'trig 1_1-no';
 
48
 
 
49
# user with minimum privs on t1->no trigger executed;
 
50
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
51
        connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
52
        use priv_db;
 
53
        insert into t1 (f1) values ('insert-yes');
 
54
        select f1 from t1 order by f1;
 
55
        
 
56
        connection default;
 
57
        select current_user;
 
58
        grant TRIGGER on priv_db.* to test_yesprivs@localhost;
 
59
        show grants for test_yesprivs@localhost;
 
60
 
 
61
# user got trigger privilege->create successful:
 
62
let $message= trigger privilege on db level for create:;
 
63
--source include/show_msg.inc
 
64
        connection yes_privs;
 
65
        select current_user;
 
66
        use priv_db;
 
67
        create trigger trg1_2 before INSERT  on t1 for each row
 
68
                set new.f1 = 'trig 1_2-yes';
 
69
 
 
70
# user with minimum privs on t1->fail,as trigger definer no update priv:;
 
71
        connection no_privs;
 
72
        select current_user;
 
73
        use priv_db;
 
74
        insert into t1 (f1) values ('insert-yes');
 
75
        select f1 from t1 order by f1;
 
76
 
 
77
        connection default;
 
78
        select current_user;
 
79
        grant UPDATE on priv_db.* to test_yesprivs@localhost;
 
80
# succeed,as trigger definer has update privilege:
 
81
# new privilege take effect after 'use db':
 
82
        use priv_db;
 
83
        insert into t1 (f1) values ('insert-no');
 
84
        select f1 from t1 order by f1;
 
85
 
 
86
# succeed:
 
87
        connection no_privs;
 
88
        select current_user;
 
89
        use priv_db;
 
90
        insert into t1 (f1) values ('insert-yes');
 
91
        select f1 from t1 order by f1;
 
92
 
 
93
        connection default;
 
94
        select current_user;
 
95
        revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
 
96
        show grants for test_yesprivs@localhost;
 
97
 
 
98
# drop must fail, as no trigger privilege:
 
99
let $message= no trigger privilege on db level for drop:;
 
100
--source include/show_msg.inc
 
101
        connection yes_privs;
 
102
        select current_user;
 
103
        use priv_db;
 
104
        --error 1142
 
105
        drop trigger trg1_2;
 
106
 
 
107
        connection no_privs;
 
108
        select current_user;
 
109
        use priv_db;
 
110
# no trigger privilege at activation time:
 
111
let $message= no trigger privilege at activation time:;
 
112
--source include/show_msg.inc
 
113
        --error 1142
 
114
        insert into t1 (f1) values ('insert-yes');
 
115
        select f1 from t1 order by f1;
 
116
 
 
117
let $message= trigger privilege at activation time:;
 
118
--source include/show_msg.inc
 
119
        connection default;
 
120
        select current_user;
 
121
        grant TRIGGER on priv_db.* to test_yesprivs@localhost;
 
122
 
 
123
# succeed, as trigger privilege at activation time:
 
124
        connection no_privs;
 
125
        select current_user;
 
126
        use priv_db;
 
127
        insert into t1 (f1) values ('insert-no');
 
128
        select f1 from t1 order by f1;
 
129
# drop must fail, as no 'use db' executed:
 
130
let $message= trigger privilege on db level for drop:;
 
131
--source include/show_msg.inc
 
132
        connection yes_privs;
 
133
        select current_user;
 
134
        show grants for test_yesprivs@localhost;
 
135
        --error 1142
 
136
        drop trigger trg1_2;
 
137
 
 
138
# succeed
 
139
let $message= takes effect after use priv_db:;
 
140
--source include/show_msg.inc
 
141
        use priv_db;
 
142
        drop trigger trg1_2;
 
143
 
 
144
        connection default;
 
145
        select current_user;
 
146
        use priv_db;
 
147
        insert into t1 (f1) values ('insert-yes');
 
148
        select f1 from t1 order by f1;
 
149
 
 
150
let $message= switch to db without having trigger priv for it:;
 
151
--source include/show_msg.inc
 
152
        use no_priv_db;
 
153
        eval create table t1 (f1 char(20)) engine= $engine_type;
 
154
# Adding the minimal priv to be able to set to the db
 
155
        grant SELECT,UPDATE on no_priv_db.* to test_yesprivs@localhost;
 
156
        show grants for test_yesprivs@localhost;
 
157
 
 
158
# trigger privilege is hold over changes between priv and no priv db:
 
159
let $message= use db with trigger privilege on db level and without...:;
 
160
--source include/show_msg.inc
 
161
        connection yes_privs;
 
162
        select current_user;
 
163
        use no_priv_db;
 
164
        --error 1142
 
165
        create trigger trg1_3 before INSERT  on t1 for each row
 
166
                set new.f1 = 'trig 1_3-no';
 
167
        use priv_db;
 
168
        create trigger trg1_3 before INSERT  on t1 for each row
 
169
                set new.f1 = 'trig 1_3-yes';
 
170
        use no_priv_db;
 
171
        --error 1142
 
172
        create trigger trg1_4 before UPDATE  on t1 for each row
 
173
                set new.f1 = 'trig 1_4-no';
 
174
        use priv_db;
 
175
        create trigger trg1_4 before UPDATE  on t1 for each row
 
176
                set new.f1 = 'trig 1_4-yes';
 
177
 
 
178
        connection no_privs;
 
179
        select current_user;
 
180
        use no_priv_db;
 
181
        insert into t1 (f1) values ('insert-yes');
 
182
        select f1 from t1 order by f1;
 
183
        use priv_db;
 
184
        insert into t1 (f1) values ('insert-no');
 
185
        select f1 from t1 order by f1;
 
186
        --disable_warnings
 
187
        disconnect no_privs;
 
188
        --enable warnings
 
189
 
 
190
        connection yes_privs;
 
191
        select current_user;
 
192
        use no_priv_db;
 
193
        --error 1360
 
194
        drop trigger trg1_3;
 
195
        use priv_db;
 
196
        drop trigger trg1_3;
 
197
        use no_priv_db;
 
198
        --error 1360
 
199
        drop trigger trg1_4;
 
200
        use priv_db;
 
201
        drop trigger trg1_4;
 
202
 
 
203
 
 
204
# Cleanup db level
 
205
        --disable_warnings
 
206
        disconnect yes_privs;
 
207
 
 
208
        connection default;
 
209
        select current_user;
 
210
        drop table priv_db.t1;
 
211
        drop table no_priv_db.t1;
 
212
        --enable_warnings
 
213
 
 
214
# general Cleanup 
 
215
        --disable_warnings
 
216
        drop database if exists priv_db;
 
217
        drop database if exists no_priv_db;
 
218
        drop user test_yesprivs@localhost;
 
219
        drop user test_noprivs@localhost;
 
220
        --enable_warnings
 
221