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 207 208 209 210 211 212 213 214 215 216 217 218 219
|
# Check the impact of changes done in ENABLED column in
# performance_schema.setup_actors.
--source include/not_windows.inc
--source include/not_embedded.inc
--source include/have_perfschema.inc
# The initial number of rows is 1. The initial row always looks like this:
# mysql> select * from performance_schema.setup_actors;
# +------+------+------+---------+---------+
# | HOST | USER | ROLE | ENABLED | HISTORY |
# +------+------+------+---------+---------+
# | % | % | % | YES | YES |
# +------+------+------+---------+---------+
select * from performance_schema.setup_actors;
truncate table performance_schema.setup_actors;
insert into performance_schema.setup_actors
values ('localhost', 'user1', '%', 'YES', 'YES');
insert into performance_schema.setup_actors
values ('localhost', 'user2', '%', 'NO', 'NO');
set @orig_sql_mode= @@sql_mode;
set sql_mode= (select replace(@@sql_mode,'NO_AUTO_CREATE_USER',''));
grant ALL on *.* to user1@localhost;
grant ALL on *.* to user2@localhost;
set sql_mode= @orig_sql_mode;
flush privileges;
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must be YES because there is a match in
# performance_schema.setup_actors and its ENABLED
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Switch to (con2, localhost, user2, , )
connect (con2, localhost, user2, , );
# INSTRUMENTED must be NO because there is a match in
# performance_schema.setup_actors but its DISABLED.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Switch to connection default
--connection default
update performance_schema.setup_actors set ENABLED='NO' where USER='user1';
update performance_schema.setup_actors set ENABLED='YES' where USER='user2';
--echo # Switch to connection con1
--connection con1
# INSTRUMENTED must still be YES because update to setup_actors doesn't affect
# existing connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Switch to connection con2
--connection con2
# INSTRUMENTED must still be NO because update to setup_actors doesn't affect
# existing connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Disconnect con1 and con2
--disconnect con1
--disconnect con2
# Now reconnect
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must still be NO because update to setup_actors affects
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Switch to (con2 localhost, user2, , )
connect (con2, localhost, user2, , );
# INSTRUMENTED must still be YES because update to setup_actors affects
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
let $con1_thread_id= `select THREAD_ID from performance_schema.threads
where PROCESSLIST_ID = connection_id()`;
--echo # Disconnect con1 and con2
--disconnect con1
--disconnect con2
--echo # Switch to connection default
--connection default
# Checking if update is allowed on performance_schema.setup_actors ENABLED
# column after revoke update privilege
revoke update on *.* from 'user2'@'localhost';
flush privileges;
--echo # Switch to (con2 localhost, user2, , )
connect (con2, localhost, user2, , );
--error ER_TABLEACCESS_DENIED_ERROR
update performance_schema.setup_actors
set ENABLED='NO';
--disconnect con2
--connection default
# Checking for Rules Order
# 1. a match for 'U1' and 'H1'.
# 2. then for 'U1' and '%'.
# 3. then for '%' and 'H1'.
# 4. then for '%' and '%'.
insert into performance_schema.setup_actors
values ('%', 'user1', '%', 'YES', 'YES');
insert into performance_schema.setup_actors
values ('localhost', '%', '%', 'NO', 'NO');
insert into performance_schema.setup_actors
values ('%', '%', '%', 'YES', 'YES');
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must still be NO as it will match rule1
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
--disconnect con1
--connection default
delete from performance_schema.setup_actors where
HOST='localhost' and USER='user1';
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must still be YES as it will match rule2
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
--disconnect con1
--connection default
delete from performance_schema.setup_actors where
HOST='%' and USER='user1';
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must still be NO as it will match rule3
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
--disconnect con1
--connection default
delete from performance_schema.setup_actors where
HOST='localhost' and USER='%';
--echo # Switch to (con1, localhost, user1, , )
connect (con1, localhost, user1, , );
# INSTRUMENTED must still be YES as it will match rule4
# new connetions.
select NAME, TYPE, INSTRUMENTED, PROCESSLIST_USER, PROCESSLIST_HOST
from performance_schema.threads
where PROCESSLIST_ID = connection_id();
--disconnect con1
--connection default
revoke all privileges, grant option from user1@localhost;
revoke all privileges, grant option from user2@localhost;
drop user user1@localhost;
drop user user2@localhost;
flush privileges;
truncate table performance_schema.setup_actors;
insert into performance_schema.setup_actors
values ('%', '%', '%', 'YES', 'YES');
select * from performance_schema.setup_actors;
|