1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
|
connect con0,localhost,root,,;
connection con0;
select hex(@a);
hex(@a)
NULL
connect con1,localhost,user_1,,"*NO-ONE*";
connection con1;
select hex(@a);
hex(@a)
610063
connection con0;
set global init_connect="set @a=2;set @b=3";
connect con2,localhost,user_1,,"*NO-ONE*";
connection con2;
select @a, @b;
@a @b
2 3
connection con0;
set GLOBAL init_connect=DEFAULT;
connect con3,localhost,user_1,,"*NO-ONE*";
connection con3;
select @a;
@a
NULL
connection con0;
set global init_connect="drop table if exists t1; create table t1(a char(10));\
insert into t1 values ('\0');insert into t1 values('abc')";
create user 'user_1'@'localhost';
GRANT DROP,CREATE,SELECT,INSERT ON test.* TO 'user_1'@'localhost';
connect con4,localhost,user_1,,test;
connection con4;
select hex(a) from t1;
hex(a)
00
616263
connection con0;
set GLOBAL init_connect="adsfsdfsdfs";
connect con5,localhost,user_1,,test;
connection con5;
select @a;
ERROR 08S01: Aborted connection to db: 'test' user: 'user_1' host: 'localhost' (init_connect command failed)
select @a;
Got one of the listed errors
connection con0;
drop table t1;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
disconnect con5;
drop user 'user_1'@'localhost';
End of 4.1 tests
create table t1 (x int);
insert into t1 values (3), (5), (7);
create table t2 (y int);
create user mysqltest1@localhost;
grant all privileges on test.* to mysqltest1@localhost;
set global init_connect="create procedure p1() select * from t1";
connect con1,localhost,mysqltest1,,test;
connection con1;
call p1();
x
3
5
7
drop procedure p1;
connection con0;
disconnect con1;
set global init_connect="create procedure p1(x int)\
begin\
select count(*) from t1;\
select * from t1;\
set @x = x;
end";
connect con1,localhost,mysqltest1,,test;
connection con1;
call p1(42);
count(*)
3
x
3
5
7
select @x;
@x
42
connection con0;
disconnect con1;
set global init_connect="call p1(4711)";
connect con1,localhost,mysqltest1,,test;
connection con1;
select @x;
@x
4711
connection con0;
disconnect con1;
set global init_connect="drop procedure if exists p1";
connect con1,localhost,mysqltest1,,test;
connection con1;
call p1();
ERROR 42000: PROCEDURE test.p1 does not exist
connection con0;
disconnect con1;
create procedure p1(out sum int)
begin
declare n int default 0;
declare c cursor for select * from t1;
declare exit handler for not found
begin
close c;
set sum = n;
end;
open c;
loop
begin
declare x int;
fetch c into x;
if x > 3 then
set n = n + x;
end if;
end;
end loop;
end|
set global init_connect="call p1(@sum)";
connect con1,localhost,mysqltest1,,test;
connection con1;
select @sum;
@sum
12
connection con0;
disconnect con1;
drop procedure p1;
create procedure p1(tbl char(10), v int)
begin
set @s = concat('insert into ', tbl, ' values (?)');
set @v = v;
prepare stmt1 from @s;
execute stmt1 using @v;
deallocate prepare stmt1;
end|
set global init_connect="call p1('t1', 11)";
connect con1,localhost,mysqltest1,,test;
connection con1;
select * from t1;
x
3
5
7
11
connection con0;
disconnect con1;
drop procedure p1;
create function f1() returns int
begin
declare n int;
select count(*) into n from t1;
return n;
end|
set global init_connect="set @x = f1()";
connect con1,localhost,mysqltest1,,test;
connection con1;
select @x;
@x
4
connection con0;
disconnect con1;
set global init_connect="create view v1 as select f1()";
connect con1,localhost,mysqltest1,,test;
connection con1;
select * from v1;
f1()
4
connection con0;
disconnect con1;
set global init_connect="drop view v1";
connect con1,localhost,mysqltest1,,test;
connection con1;
select * from v1;
ERROR 42S02: Table 'test.v1' doesn't exist
connection con0;
disconnect con1;
drop function f1;
create trigger trg1
after insert on t2
for each row
insert into t1 values (new.y);
set global init_connect="insert into t2 values (13), (17), (19)";
connect con1,localhost,mysqltest1,,test;
connection con1;
select * from t1;
x
3
5
7
11
13
17
19
connection default;
disconnect con0;
disconnect con1;
drop trigger trg1;
set global init_connect="set @a='a\\0c'";
revoke all privileges, grant option from mysqltest1@localhost;
drop user mysqltest1@localhost;
drop table t1, t2;
|