1-- source include/not_embedded.inc
2
3--echo #
4--echo # Start of 10.5 tests
5--echo #
6
7--echo #
8--echo # MDEV-21743 Split up SUPER privilege to smaller privileges
9--echo #
10
11--let $count_sessions=1
12
13--echo #
14--echo # Test that KILL is not allowed without CONNECTION ADMIN or SUPER
15--echo #
16
17CREATE USER foo@localhost;
18GRANT SELECT ON *.* TO foo@localhost;
19CREATE USER bar@localhost;
20GRANT ALL PRIVILEGES ON *.* TO bar@localhost;
21REVOKE CONNECTION ADMIN, SUPER ON *.* FROM bar@localhost;
22--connect (foo,localhost,foo,,)
23let $id=`(SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user='foo')`;
24--connect (bar,localhost,bar,,)
25SELECT user FROM information_schema.processlist ORDER BY user;
26--replace_result $id ID
27--error ER_KILL_DENIED_ERROR
28--eval KILL $id
29--disconnect foo
30--disconnect bar
31--connection default
32--source include/wait_until_count_sessions.inc
33DROP USER foo@localhost;
34DROP USER bar@localhost;
35
36--echo #
37--echo # Test that KILL is allowed with CONNECTION ADMIN
38--echo #
39
40CREATE USER foo@localhost;
41GRANT SELECT ON *.* TO foo@localhost;
42CREATE USER bar@localhost;
43GRANT PROCESS, CONNECTION ADMIN ON *.* TO bar@localhost;
44--connect (foo,localhost,foo,,)
45let $id=`(SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user='foo')`;
46--connect (bar,localhost,bar,,)
47SELECT user FROM information_schema.processlist ORDER BY user;
48--replace_result $id ID
49--eval KILL $id
50--connection default
51let $wait_condition=
52    select count(*) = 0 from information_schema.processlist
53    where user = "foo";
54--source include/wait_condition.inc
55--disconnect foo
56--disconnect bar
57--source include/wait_until_count_sessions.inc
58DROP USER foo@localhost;
59DROP USER bar@localhost;
60
61--echo #
62--echo # Test that KILL is allowed with SUPER
63--echo #
64
65CREATE USER foo@localhost;
66GRANT SELECT ON *.* TO foo@localhost;
67CREATE USER bar@localhost;
68GRANT PROCESS, SUPER ON *.* TO bar@localhost;
69--connect (foo,localhost,foo,,)
70let $id=`(SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user='foo')`;
71--connect (bar,localhost,bar,,)
72SELECT user FROM information_schema.processlist ORDER BY user;
73--replace_result $id ID
74--eval KILL $id
75--connection default
76let $wait_condition=
77    select count(*) = 0 from information_schema.processlist
78    where user = "foo";
79--source include/wait_condition.inc
80--disconnect foo
81--disconnect bar
82--source include/wait_until_count_sessions.inc
83DROP USER foo@localhost;
84DROP USER bar@localhost;
85
86--echo #
87--echo # End of 10.5 tests
88--echo #
89