Skip to content

Commit 95c29c1

Browse files
author
Tatjana Azundris Nuernberg
committed
WL#5706
split rewrite tests as suggested by Horst
1 parent 7f188d4 commit 95c29c1

5 files changed

+208
-199
lines changed

mysql-test/r/rewrite.result

Lines changed: 0 additions & 123 deletions
This file was deleted.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
TRUNCATE TABLE mysql.general_log;
2+
--------------- general log ---------------------------------------
3+
SET @old_log_output= @@global.log_output;
4+
SET @old_general_log= @@global.general_log;
5+
SET @old_general_log_file= @@global.general_log_file;
6+
SET GLOBAL general_log_file = '.../log/rewrite_general.log';
7+
SET GLOBAL log_output = 'FILE,TABLE';
8+
SET GLOBAL general_log= 'ON';
9+
set character set 'hebrew';
10+
set charset default,@dummy='A';
11+
set names 'latin1',@dummy='B';
12+
set names 'latin1' collate 'latin1_german2_ci';
13+
set names default,@dummy='c';
14+
GRANT ALL on *.* TO test_user1 IDENTIFIED BY 'azundris1';
15+
CREATE USER test_user2 IDENTIFIED BY 'azundris2';
16+
CHANGE MASTER TO MASTER_PASSWORD='azundris3';
17+
CREATE USER 'test_user4'@'localhost';
18+
SET PASSWORD FOR 'test_user4'@'localhost' = PASSWORD('azundris4');
19+
SET GLOBAL general_log= 'OFF';
20+
DROP USER 'test_user4'@'localhost';
21+
DROP USER test_user2;
22+
DROP USER test_user1;
23+
CREATE TABLE test_log (argument TEXT);
24+
LOAD DATA LOCAL INFILE '.../log/rewrite_general.log'
25+
INTO TABLE test_log FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n';
26+
This line should be followed by two SELECTs with empty result sets
27+
SELECT argument FROM test_log WHERE argument LIKE CONCAT('%azun','dris%');
28+
argument
29+
SELECT argument FROM mysql.general_log WHERE argument LIKE CONCAT('%azun','dris%');
30+
argument
31+
Show that we logged stuff at all:
32+
------ from file ------
33+
SELECT TRIM(LEADING '\t' FROM MID(argument,LOCATE('Query',argument)+5)) FROM test_log WHERE argument LIKE '%PASSWORD %';
34+
TRIM(LEADING '\t' FROM MID(argument,LOCATE('Query',argument)+5))
35+
GRANT ALL PRIVILEGES ON *.* TO 'test_user1'@'%' IDENTIFIED BY PASSWORD '*8D15E74BC850D11573A52BE84B504DD0BA40C1E3'
36+
CREATE USER 'test_user2'@'%' IDENTIFIED BY PASSWORD '*A142844DBF024D282D88FE19CB4D3FA13B1E96E0'
37+
CHANGE MASTER TO MASTER_PASSWORD = <secret>
38+
SET PASSWORD FOR `test_user4`@`localhost`=<secret>
39+
------ from table ------
40+
SELECT argument FROM mysql.general_log WHERE argument LIKE '%PASSWORD %';
41+
argument
42+
GRANT ALL PRIVILEGES ON *.* TO 'test_user1'@'%' IDENTIFIED BY PASSWORD '*8D15E74BC850D11573A52BE84B504DD0BA40C1E3'
43+
CREATE USER 'test_user2'@'%' IDENTIFIED BY PASSWORD '*A142844DBF024D282D88FE19CB4D3FA13B1E96E0'
44+
CHANGE MASTER TO MASTER_PASSWORD = <secret>
45+
SET PASSWORD FOR `test_user4`@`localhost`=<secret>
46+
------ done ------
47+
------ rewrite ------
48+
SELECT argument FROM mysql.general_log WHERE argument LIKE 'SET CHARACTER SET %';
49+
argument
50+
SET CHARACTER SET 'hebrew'
51+
SET CHARACTER SET DEFAULT,(@dummy:='A')
52+
SELECT argument FROM mysql.general_log WHERE argument LIKE 'SET NAMES %';
53+
argument
54+
SET NAMES 'latin1',(@dummy:='B')
55+
SET NAMES 'latin1' COLLATE 'latin1_german2_ci'
56+
SET NAMES DEFAULT,(@dummy:='c')
57+
------ done ------ see log_tables.test for more proof! :)
58+
DROP TABLE test_log;
59+
SET GLOBAL general_log_file= @old_general_log_file;
60+
SET GLOBAL general_log= @old_general_log;
61+
SET GLOBAL log_output= @old_log_output;
62+
End of 5.6 tests!

mysql-test/r/rewrite_slow_log.result

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
TRUNCATE TABLE mysql.slow_log;
2+
SET @old_log_output= @@global.log_output;
3+
SET @old_slow_query_log= @@global.slow_query_log;
4+
SET @old_slow_query_log_file= @@global.slow_query_log_file;
5+
SET @old_long_query_time= @@global.long_query_time;
6+
SET GLOBAL slow_query_log_file= '.../log/rewrite_slow.log';
7+
SET GLOBAL log_output = 'FILE,TABLE';
8+
SET GLOBAL slow_query_log= 'ON';
9+
SET SESSION long_query_time= 0;
10+
GRANT ALL on *.* TO test_user1 IDENTIFIED BY 'azundris1';
11+
CREATE USER test_user2 IDENTIFIED BY 'azundris2';
12+
CHANGE MASTER TO MASTER_PASSWORD='azundris3';
13+
CHANGE MASTER TO MASTER_CONNECT_RETRY = 1, MASTER_HEARTBEAT_PERIOD = 1.01,
14+
MASTER_LOG_FILE = 'master_log_name', MASTER_LOG_POS = 0,
15+
MASTER_SSL = 0, MASTER_SSL_CA = 'ca_file_name',
16+
MASTER_SSL_CAPATH = 'ca_directory_name',
17+
MASTER_SSL_CERT = 'cert_file_name', MASTER_SSL_KEY = 'key_file_name',
18+
MASTER_SSL_CIPHER = 'cipher_list', MASTER_SSL_VERIFY_SERVER_CERT = 0,
19+
IGNORE_SERVER_IDS = (99,100);
20+
CHANGE MASTER TO MASTER_CONNECT_RETRY = 1, MASTER_HEARTBEAT_PERIOD = 1.01,
21+
MASTER_LOG_FILE = '', MASTER_LOG_POS = 0,
22+
MASTER_SSL = 0, MASTER_SSL_CA = '',
23+
MASTER_SSL_CAPATH = '',
24+
MASTER_SSL_CERT = '', MASTER_SSL_KEY = '',
25+
MASTER_SSL_CIPHER = '', MASTER_SSL_VERIFY_SERVER_CERT = 0,
26+
IGNORE_SERVER_IDS = ( );
27+
CREATE USER 'test_user4'@'localhost';
28+
SET PASSWORD FOR 'test_user4'@'localhost' = PASSWORD('azundris4');
29+
SET SESSION long_query_time= @old_long_query_time;
30+
SET GLOBAL slow_query_log='OFF';
31+
DROP USER 'test_user4'@'localhost';
32+
DROP USER test_user2;
33+
DROP USER test_user1;
34+
CREATE TABLE test_log (sql_text TEXT);
35+
LOAD DATA LOCAL INFILE '.../log/rewrite_slow.log'
36+
INTO TABLE test_log FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n';
37+
This line should be followed by two SELECTs with empty result sets
38+
SELECT sql_text FROM test_log WHERE sql_text LIKE CONCAT('%azun','dris%');
39+
sql_text
40+
SELECT sql_text FROM mysql.slow_log WHERE sql_text LIKE CONCAT('%azun','dris%');
41+
sql_text
42+
------ from file ------
43+
SELECT sql_text FROM test_log WHERE sql_text like '%PASSWORD %';
44+
sql_text
45+
GRANT ALL PRIVILEGES ON *.* TO 'test_user1'@'%' IDENTIFIED BY PASSWORD '*8D15E74BC850D11573A52BE84B504DD0BA40C1E3';
46+
CREATE USER 'test_user2'@'%' IDENTIFIED BY PASSWORD '*A142844DBF024D282D88FE19CB4D3FA13B1E96E0';
47+
CHANGE MASTER TO MASTER_PASSWORD = <secret>;
48+
SET PASSWORD FOR `test_user4`@`localhost`=<secret>;
49+
------ from table ------
50+
SELECT sql_text FROM mysql.slow_log WHERE sql_text like '%PASSWORD %';
51+
sql_text
52+
GRANT ALL PRIVILEGES ON *.* TO 'test_user1'@'%' IDENTIFIED BY PASSWORD '*8D15E74BC850D11573A52BE84B504DD0BA40C1E3'
53+
CREATE USER 'test_user2'@'%' IDENTIFIED BY PASSWORD '*A142844DBF024D282D88FE19CB4D3FA13B1E96E0'
54+
CHANGE MASTER TO MASTER_PASSWORD = <secret>
55+
SET PASSWORD FOR `test_user4`@`localhost`=<secret>
56+
------ done ------
57+
DROP TABLE test_log;
58+
SET GLOBAL slow_query_log_file= @old_slow_query_log_file;
59+
SET GLOBAL slow_query_log= @old_slow_query_log;
60+
SET GLOBAL log_output= @old_log_output;
61+
End of 5.6 tests!

mysql-test/t/rewrite_general_log.test

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#
2+
# WL#5706/Bug#58712/Bug#11746378
3+
# Encrypt or remove passwords from slow, query, and binary logs
4+
# (see sql/sql_rewrite.cc for bulk of implementation)
5+
#
6+
7+
# make sure we start with a clean slate. log_tables.test says this is OK.
8+
TRUNCATE TABLE mysql.general_log;
9+
10+
--echo --------------- general log ---------------------------------------
11+
12+
SET @old_log_output= @@global.log_output;
13+
SET @old_general_log= @@global.general_log;
14+
SET @old_general_log_file= @@global.general_log_file;
15+
16+
--replace_result $MYSQLTEST_VARDIR ...
17+
eval SET GLOBAL general_log_file = '$MYSQLTEST_VARDIR/log/rewrite_general.log';
18+
SET GLOBAL log_output = 'FILE,TABLE';
19+
SET GLOBAL general_log= 'ON';
20+
21+
# SET NAMES / SET CHARSET
22+
# keep these in lower case we can tell them from the upper case rewrites!
23+
set character set 'hebrew';
24+
set charset default,@dummy='A';
25+
set names 'latin1',@dummy='B';
26+
set names 'latin1' collate 'latin1_german2_ci';
27+
set names default,@dummy='c';
28+
29+
# 1.1.1.1
30+
GRANT ALL on *.* TO test_user1 IDENTIFIED BY 'azundris1';
31+
32+
# 1.1.1.2
33+
CREATE USER test_user2 IDENTIFIED BY 'azundris2';
34+
35+
# 1.1.1.3
36+
CHANGE MASTER TO MASTER_PASSWORD='azundris3';
37+
38+
# 1.1.1.4
39+
CREATE USER 'test_user4'@'localhost';
40+
SET PASSWORD FOR 'test_user4'@'localhost' = PASSWORD('azundris4');
41+
42+
# clean-up
43+
SET GLOBAL general_log= 'OFF';
44+
45+
DROP USER 'test_user4'@'localhost';
46+
DROP USER test_user2;
47+
DROP USER test_user1;
48+
49+
# show general-logging to file is correct
50+
CREATE TABLE test_log (argument TEXT);
51+
--replace_result $MYSQLTEST_VARDIR ...
52+
eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/log/rewrite_general.log'
53+
INTO TABLE test_log FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n';
54+
55+
# all passwords ('azundris%') must have been obfuscated -> empty result set
56+
--echo This line should be followed by two SELECTs with empty result sets
57+
--replace_regex /.*Query *//i
58+
SELECT argument FROM test_log WHERE argument LIKE CONCAT('%azun','dris%');
59+
60+
# same for logging to table
61+
SELECT argument FROM mysql.general_log WHERE argument LIKE CONCAT('%azun','dris%');
62+
63+
--echo Show that we logged stuff at all:
64+
--echo ------ from file ------
65+
SELECT TRIM(LEADING '\t' FROM MID(argument,LOCATE('Query',argument)+5)) FROM test_log WHERE argument LIKE '%PASSWORD %';
66+
--echo ------ from table ------
67+
SELECT argument FROM mysql.general_log WHERE argument LIKE '%PASSWORD %';
68+
--echo ------ done ------
69+
70+
--echo ------ rewrite ------
71+
SELECT argument FROM mysql.general_log WHERE argument LIKE 'SET CHARACTER SET %';
72+
SELECT argument FROM mysql.general_log WHERE argument LIKE 'SET NAMES %';
73+
--echo ------ done ------ see log_tables.test for more proof! :)
74+
75+
DROP TABLE test_log;
76+
77+
--remove_file $MYSQLTEST_VARDIR/log/rewrite_general.log
78+
79+
SET GLOBAL general_log_file= @old_general_log_file;
80+
SET GLOBAL general_log= @old_general_log;
81+
SET GLOBAL log_output= @old_log_output;
82+
83+
--echo End of 5.6 tests!

0 commit comments

Comments
 (0)