Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.140.247.39
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
mysql /
mysql-test /
suite /
audit_null /
t /
[ HOME SHELL ]
Name
Size
Permission
Action
audit_plugin-master.opt
17
B
-rw-r--r--
audit_plugin.test
1.48
KB
-rw-r--r--
audit_plugin_2-master.opt
15
B
-rw-r--r--
audit_plugin_2.test
107.34
KB
-rw-r--r--
audit_plugin_bugs-master.opt
16
B
-rw-r--r--
audit_plugin_bugs.test
4.63
KB
-rw-r--r--
general_error_abort-master.opt
15
B
-rw-r--r--
general_error_abort.test
1.58
KB
-rw-r--r--
general_error_abort_ps-master....
15
B
-rw-r--r--
general_error_abort_ps.test
3.66
KB
-rw-r--r--
general_log_abort-master.opt
15
B
-rw-r--r--
general_log_abort.test
1.16
KB
-rw-r--r--
general_log_abort_ps-master.op...
15
B
-rw-r--r--
general_log_abort_ps.test
6.09
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : audit_plugin_2.test
--source include/have_null_audit_plugin.inc --source include/not_embedded.inc call mtr.add_suppression("Event 'MYSQL_AUDIT_COMMAND_END' cannot be aborted."); call mtr.add_suppression("Event 'MYSQL_AUDIT_CONNECTION_DISCONNECT' cannot be aborted."); call mtr.add_suppression("Event 'MYSQL_AUDIT_GENERAL_RESULT' cannot be aborted."); call mtr.add_suppression("Event 'MYSQL_AUDIT_GENERAL_STATUS' cannot be aborted."); call mtr.add_suppression("Command 'Ping' cannot be aborted."); connection default; let $expected_extension= so; if(`SELECT CONVERT(@@version_compile_os USING latin1) IN ("Win32","Win64","Windows")`) { let $expected_extension= dll; } --replace_result $expected_extension <expected_extension> eval INSTALL PLUGIN null_audit SONAME 'adt_null.$expected_extension'; let $event_order_exact= 1; let $command_start_id= 3; let $command_end_id= 3; if(`SELECT $PS_PROTOCOL > 0`) { let $event_order_exact= 0; let $command_start_id= 22; let $command_end_id= 25; } --echo ################ --echo ## CONNECTION ## --echo ################ connection default; CREATE USER user1@localhost IDENTIFIED BY 'pass'; SET GLOBAL null_audit_event_order_check = "MYSQL_AUDIT_CONNECTION_PRE_AUTHENTICATE;;ABORT_RET"; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT --connect(user1_con, localhost, user1, pass) SET GLOBAL null_audit_event_order_check = "MYSQL_AUDIT_CONNECTION_PRE_AUTHENTICATE;;;" "MYSQL_AUDIT_GENERAL_LOG;;;" "MYSQL_AUDIT_CONNECTION_CONNECT;;ABORT_RET"; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT --connect(user1_con, localhost, user1, pass) connection default; SET GLOBAL null_audit_event_order_check = NULL; --connect(user1_con, localhost, user1, pass) disconnect user1_con; connection default; SET GLOBAL null_audit_event_order_check = "MYSQL_AUDIT_CONNECTION_DISCONNECT;;ABORT_RET"; --connect(user1_con, localhost, user1, pass) --echo # mysql_audit_connection_disconnect result does not have any significance disconnect user1_con; connection default; SET GLOBAL null_audit_event_order_check = NULL; --echo ############# --echo ## COMMAND ## --echo ############# --echo # Command start abort --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; SELECT 1; SET @@GLOBAL.null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="14";ABORT_RET'; --exec $MYSQLADMIN --no-defaults --default-character-set=latin1 -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root ping 2>&1 SET @@GLOBAL.null_audit_event_order_check = NULL; --echo ############# --echo ## GENERAL ## --echo ############# --echo ########################## --echo ## ABORT GENERAL RESULT ## --echo ########################## --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; --echo ########################################## --echo ## ABORT GENERAL RESULT WITH MY_MESSAGE ## --echo ########################################## SET @@null_audit_abort_message = "Abort with my_message."; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; --echo ########################## --echo ## ABORT GENERAL STATUS ## --echo ########################## --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; --echo ########################################## --echo ## ABORT GENERAL STATUS WITH MY_MESSAGE ## --echo ########################################## SET @@null_audit_abort_message = "Abort with my_message."; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; --echo ########### --echo ## QUERY ## --echo ########### connection default; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; SELECT 1; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; SELECT 1; --echo ############## --echo ## VARIABLE ## --echo ############## connection default; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;name="null_audit_abort_value" value="1";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT @@GLOBAL.null_audit_abort_value; SELECT @@null_audit_event_order_check; SELECT @@GLOBAL.null_audit_abort_value; --echo ## SESSION variable access should not be blocked. --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";'; SELECT @@null_audit_abort_value; SELECT @@null_audit_event_order_check; --echo # SHOW GLOBAL VARIABLE SET @old_show_compatibility_56=@@global.show_compatibility_56; SET @@global.show_compatibility_56=ON; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="15";;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;name="null_audit_abort_value" value="1";ABORT_RET', @@null_audit_event_order_check_exact = 1; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SHOW GLOBAL VARIABLES LIKE 'null_audit_abort_value'; SELECT @@null_audit_event_order_check; SHOW GLOBAL VARIABLES LIKE 'null_audit_abort_value'; # With show_compatibility_56=0 we get audit notifications for all variables # and there's no stable order. So we just wait for the first and ignore the name SET @@global.show_compatibility_56=OFF; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="15";;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;ABORT_RET', @@null_audit_event_order_check_exact = 1; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SHOW GLOBAL VARIABLES LIKE 'null_audit_abort_value'; SELECT @@null_audit_event_order_check; SHOW GLOBAL VARIABLES LIKE 'null_audit_abort_value'; SET @@global.show_compatibility_56=@old_show_compatibility_56; --echo # SHOW GLOBAL VARIABLE eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="15";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="15";'; SHOW SESSION VARIABLES LIKE 'null_audit_abort_value'; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="31";;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_SET;name="null_audit_event_order_check" value="NULL";ABORT_RET', @@null_audit_event_order_check_exact = 1; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SET @@GLOBAL.null_audit_event_order_check = NULL; SELECT @@null_audit_event_order_check; SET @@GLOBAL.null_audit_event_order_check = NULL; --echo # Global variables through virtual tables --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;name="null_audit_abort_value" value="1";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT * FROM information_schema.global_variables WHERE VARIABLE_NAME = 'null_audit_abort_value'; SELECT @@null_audit_event_order_check; --echo ############################### --echo ## QUERY - FIRST LEVEL ABORT ## --echo ############################### CREATE DATABASE super_test; USE super_test; CREATE TABLE test_table (a INT); --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table VALUES(1); SELECT * FROM test_table; SELECT @@null_audit_event_order_check; INSERT INTO test_table VALUES(2); SELECT * FROM test_table; DELETE FROM test_table; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table VALUES(1); SELECT @@null_audit_event_order_check; SELECT * FROM test_table; ### Two queries sent as a single query. They are treated and executed ### separately by the server. If the second execution query fails the ### first one succeedes. SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";ABORT_RET', @@null_audit_event_order_check_exact = 1; --delimiter |; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table VALUES(3); INSERT INTO test_table VALUES(4); |; --delimiter ; SELECT @@null_audit_event_order_check; SELECT * FROM test_table; DELETE FROM test_table; --delimiter |; CREATE PROCEDURE simple_proc() BEGIN INSERT INTO test_table VALUES(1); INSERT INTO test_table VALUES(2); END|; CREATE PROCEDURE simple_proc2() BEGIN INSERT INTO test_table VALUES(1); INSERT INTO test_table VALUES('a'); END|; --delimiter ; CALL simple_proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table; DELETE FROM test_table; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="91";ABORT_RET', @@null_audit_event_order_check_exact = 1; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT CALL simple_proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table; DELETE FROM test_table; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="91";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";', @@null_audit_event_order_check_exact = 1; CALL simple_proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table; DELETE FROM test_table; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD call simple_proc2(); SELECT * FROM test_table; DELETE FROM test_table; --delimiter | CREATE TABLE test_table_2 (a INT) ENGINE=InnoDB; CREATE PROCEDURE proc() BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; START TRANSACTION; insert into test_table_2 values(1); insert into test_table_2 values(2); COMMIT WORK; END| --delimiter ; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="54";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="54";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="91";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";', @@null_audit_event_order_check_exact = 1; CALL proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table_2 ORDER BY a; DELETE FROM test_table_2; --echo ## ABORT ON COMMIT START SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="54";ABORT_RET', @@null_audit_event_order_check_exact = 1; CALL proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table_2; DELETE FROM test_table_2; --echo ## ABORT ON COMMIT SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="61";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="54";;' 'MYSQL_AUDIT_QUERY_NESTED_STATUS_END;sql_command_id="54";ABORT_RET', @@null_audit_event_order_check_exact = 1; CALL proc(); SELECT @@null_audit_event_order_check; SELECT * FROM test_table_2; DELETE FROM test_table_2; --echo ## Not nested queries INSERT INTO test_table VALUES(1),(2),(3); INSERT INTO test_table_2 VALUES(1),(2),(3); --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT test_table.a FROM test_table WHERE EXISTS (SELECT test_table_2.a from test_table_2 WHERE test_table.a = test_table_2.a) ORDER BY test_table.a; SELECT @@null_audit_event_order_check; --echo ## A query that references single table two times. Two READ events should be triggered. --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT t1.a FROM test_table as t1 WHERE EXISTS (SELECT t2.a from test_table as t2 WHERE t1.a = t2.a) ORDER BY t1.a; SELECT @@null_audit_event_order_check; --echo ## A query that references single table two times. Two READ events should be triggered. --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM test_table AS t1, test_table_2 AS t2 ORDER BY t1.a, t2.a; SELECT @@null_audit_event_order_check; # Cleanup DELETE FROM test_table; DELETE FROM test_table_2; --echo ######################### --echo ## TABLE_ACCESS - READ ## --echo ######################### --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM test_table; SELECT @@null_audit_event_order_check; LOCK TABLES test_table READ; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM test_table; SELECT @@null_audit_event_order_check; UNLOCK TABLES; CREATE TEMPORARY TABLE audit_temp_table (a INT); --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM audit_temp_table; SELECT @@null_audit_event_order_check; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="51";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="51";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; ANALYZE TABLE test_table; SELECT @@null_audit_event_order_check; --echo ########################### --echo ## TABLE_ACCESS - INSERT ## --echo ########################### --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table VALUES (1),(2); SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO test_table VALUES (1),(2); SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO test_table VALUES (101),(102); SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO audit_temp_table VALUES (1),(2); SELECT * FROM audit_temp_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; # Cleanup DELETE FROM test_table WHERE a > 100; --echo ################################## --echo ## TABLE_ACCESS - INSERT SELECT ## --echo ################################## --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="6";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table SELECT a+2 FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="6";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT INSERT INTO test_table SELECT a+2 FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="6";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="6";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO test_table SELECT a+2 FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; LOCK TABLES test_table WRITE, test_table AS test_table_l READ; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="6";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="6";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO test_table SELECT a+100 FROM test_table AS test_table_l; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; # Cleanup DELETE FROM test_table WHERE a > 100; --echo ########################### --echo ## TABLE_ACCESS - UPDATE ## --echo ########################### --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT UPDATE test_table SET a=a+4; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE test_table SET a=a+4; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE test_table SET a=a+4; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE audit_temp_table SET a=a+2; SELECT * FROM audit_temp_table ORDER BY a; SELECT @@null_audit_event_order_check; --echo ################################# --echo ## TABLE_ACCESS - UPDATE WHERE ## --echo ################################# --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT UPDATE test_table SET a=a+10 WHERE a>10; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE test_table SET a=a+10 WHERE a>10; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE test_table SET a=a+10 WHERE a>10; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; # UPDATE statement that consists both update and read tables --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; update test_table set test_table.a=test_table.a+10 where test_table.a in (select test_table_2.a + 10 from test_table_2); SELECT @@null_audit_event_order_check; --echo ################################# --echo ## TABLE_ACCESS - DELETE WHERE ## --echo ################################# --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT DELETE FROM test_table WHERE a>7; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="7";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; DELETE FROM test_table WHERE a>31; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="7";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; DELETE FROM test_table WHERE a>30; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; --echo ########################### --echo ## TABLE_ACCESS - DELETE ## --echo ########################### --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT DELETE FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="7";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; DELETE FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; INSERT INTO test_table VALUES (1),(2); LOCK TABLES test_table WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="7";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; DELETE FROM test_table; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; UNLOCK TABLES; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="7";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="7";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; DELETE FROM audit_temp_table; SELECT * FROM audit_temp_table ORDER BY a; SELECT @@null_audit_event_order_check; #Cleanup DROP TABLE audit_temp_table; --echo ############################ --echo ## TABLE_ACCESS - REPLACE ## --echo ############################ #Precondition CREATE TABLE test_table_3 (id INT NOT NULL, data VARCHAR(10) NOT NULL, PRIMARY KEY (id)); INSERT INTO test_table_3 VALUES (1, 'Old'), (2, 'Old'); --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="40";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT REPLACE INTO test_table_3 VALUES (1, 'New'); SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="40";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="40";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; REPLACE INTO test_table_3 VALUES (1, 'New'); SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; LOCK TABLES test_table_3 WRITE; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="40";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="40";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; REPLACE INTO test_table_3 VALUES (2, 'New'); SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; UNLOCK TABLE; --echo ################################### --echo ## TABLE_ACCESS - REPLACE SELECT ## --echo ################################### --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="41";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT REPLACE INTO test_table_3 SELECT id, 'Sel' FROM test_table_3; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="41";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="41";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; REPLACE INTO test_table_3 SELECT id, 'Sel' FROM test_table_3; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; LOCK TABLES test_table_3 WRITE, test_table_3 AS test_table_3_l READ; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="41";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="41";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; REPLACE INTO test_table_3 SELECT id, 'Sec' FROM test_table_3 AS test_table_3_l; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; UNLOCK TABLES; --echo ############################# --echo ## TABLE_ACCESS - TRUNCATE ## --echo ############################# SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="8";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table_3";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT TRUNCATE test_table_3; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="8";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="8";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; TRUNCATE test_table_3; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; INSERT INTO test_table_3 VALUES (1, 'AAA'),(2, 'BBB'); LOCK TABLES test_table_3 WRITE; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="8";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="8";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; TRUNCATE test_table_3; SELECT * FROM test_table_3 ORDER BY id; SELECT @@null_audit_event_order_check; UNLOCK TABLES; --echo ################################################# --echo ## TABLE_ACCESS - TRUNCATE (HTON_CAN_RECREATE) ## --echo ################################################# CREATE TABLE test_table_4 (a INT) ENGINE=MyISAM; INSERT INTO test_table_4 VALUES(1),(2),(3); SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="8";;' 'MYSQL_AUDIT_TABLE_ACCESS_DELETE;db="super_test" table="test_table_4";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="8";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; TRUNCATE test_table_4; SELECT @@null_audit_event_order_check; #Cleanup DROP TABLE test_table_4; --echo ############################ --echo ## TABLE_ACCESS - TRIGGER ## --echo ############################ CREATE PROCEDURE sp_test_table_insert(val INT) INSERT INTO test_table VALUES (@val); CREATE TRIGGER ins_sum BEFORE INSERT ON test_table_2 FOR EACH ROW CALL sp_test_table_insert(@NEW.a + 100); ALTER TABLE test_table_3 DROP COLUMN data; INSERT INTO test_table_3 VALUES (1),(2); --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="6";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table_2";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="91";;' 'MYSQL_AUDIT_STORED_PROGRAM_EXECUTE;;;' 'MYSQL_AUDIT_QUERY_NESTED_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="6";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_start_id";;'; INSERT INTO test_table_2 SELECT * FROM test_table_3; SELECT @@null_audit_event_order_check; --echo ################# --echo ## OUTER TABLE ## --echo ################# --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table_3";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM (SELECT id FROM test_table_3) AS a; SELECT @@null_audit_event_order_check; --echo ########## --echo ## VIEW ## --echo ########## TRUNCATE TABLE test_table; INSERT INTO test_table VALUES (1), (2), (3); SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="102";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="102";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; CREATE VIEW audit_view AS SELECT * FROM test_table; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; INSERT INTO audit_view VALUES (4), (5), (6); SELECT @@null_audit_event_order_check; SELECT * FROM test_table; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="4";;' 'MYSQL_AUDIT_TABLE_ACCESS_UPDATE;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="4";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; UPDATE audit_view SET a = a + 7; SELECT @@null_audit_event_order_check; SELECT * FROM test_table; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM audit_view; SELECT @@null_audit_event_order_check; #Cleanup DROP VIEW audit_view; --echo ################### --echo ## DERIVED TABLE ## --echo ################### --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_start_id";'; SELECT COUNT(*) FROM (SELECT a FROM test_table GROUP BY a) AS a1; SELECT @@null_audit_event_order_check; --echo ######################### --echo ## PREPARED STATEMENTS ## --echo ######################### DELETE FROM test_table; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="99";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="99";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; PREPARE stmt FROM "INSERT INTO test_table VALUES (1),(2)"; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="100";;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="100";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; EXECUTE stmt; SELECT * FROM test_table ORDER BY a; SELECT @@null_audit_event_order_check; --echo ######################################################## --echo ## PREPARED STATEMENTS - DERIVED TABLE ## --echo ## Bug#23699991 EXECUTE STATEMENT CAUSES SERVER CRASH ## --echo ## WHEN AUDIT_LOG IS INSTALLED ON SERVER ## --echo ######################################################## PREPARE stmt FROM 'SELECT COUNT(*) FROM (SELECT a FROM test_table GROUP BY a) AS a1'; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="100";;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="test_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="100";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; EXECUTE stmt; SELECT @@null_audit_event_order_check; DROP PREPARE stmt; #Cleanup DROP TABLE test_table_3; DROP TABLE test_table_2; DROP TABLE test_table; --echo ################ --echo ## PARTITIONS ## --echo ################ CREATE TABLE table_part (id INT NOT NULL PRIMARY KEY, name VARCHAR(16) NOT NULL, year YEAR, INDEX name (name(8))) PARTITION BY HASH(id) PARTITIONS 2; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; let $1 = 1; --disable_query_log --disable_result_log while ($1 < 10) { --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="5";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="table_part";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="5";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; eval INSERT INTO table_part VALUES ( $1, 'Test $1', '2015' ); SELECT @@null_audit_event_order_check; inc $1; } --enable_result_log --enable_query_log # Cleanup DROP TABLE table_part; SET @@null_audit_event_order_check_exact = 1; --echo ########### --echo ## MERGE ## --echo ########### CREATE TABLE merge_table_1 (message CHAR(20)) ENGINE=MyISAM; CREATE TABLE merge_table_2 (message CHAR(20)) ENGINE=MyISAM; INSERT INTO merge_table_1 (message) VALUES ('AAA'),('CCC'),('EEE'); INSERT INTO merge_table_2 (message) VALUES ('BBB'),('DDD'),('FFF'); CREATE TABLE merge_table (message CHAR(20)) ENGINE=MERGE UNION=(merge_table_1,merge_table_2) INSERT_METHOD=LAST; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT * FROM merge_table; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table_1";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table_2";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT * FROM merge_table; SELECT @@null_audit_event_order_check; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table_1";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="merge_table_2";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";'; SELECT * FROM merge_table ORDER BY message; SELECT @@null_audit_event_order_check; #Cleanup DROP TABLE merge_table; DROP TABLE merge_table_2; DROP TABLE merge_table_1; --echo ############# --echo ## HANDLER ## --echo ############# CREATE TABLE handler_table (message CHAR(20)) ENGINE=MyISAM; INSERT INTO handler_table VALUES ('AAA'), ('BBB'), ('CCC'), ('DDD'); SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="70";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="70";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; HANDLER handler_table OPEN; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="72";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="handler_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="72";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; HANDLER handler_table READ FIRST; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="72";;' 'MYSQL_AUDIT_TABLE_ACCESS_READ;db="super_test" table="handler_table";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="72";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; HANDLER handler_table READ NEXT; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="71";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="71";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; HANDLER handler_table CLOSE; SELECT @@null_audit_event_order_check; #Read error HANDLER handler_table OPEN AS handler_table_alias; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="72";;' 'MYSQL_AUDIT_GENERAL_ERROR;;;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="72";;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; --error ER_KEY_DOES_NOT_EXITS HANDLER handler_table_alias READ message NEXT; SELECT @@null_audit_event_order_check; #Cleanup DROP TABLE handler_table; --echo ############### --echo ## LOAD DATA ## --echo ############### create table audit_load_data (a varchar(20), b varchar(20)); SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="30";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="audit_load_data";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT load data infile '../../std_data/loaddata_dq.dat' into table audit_load_data fields terminated by ',' enclosed by '"' escaped by '"' (a,b); SELECT * FROM audit_load_data ORDER BY a; SELECT @@null_audit_event_order_check; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="30";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="audit_load_data";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="30";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; load data infile '../../std_data/loaddata_dq.dat' into table audit_load_data fields terminated by ',' enclosed by '"' escaped by '"' (a,b); SELECT * FROM audit_load_data ORDER BY a; SELECT @@null_audit_event_order_check; # Cleanup DROP TABLE audit_load_data; --echo ############## --echo ## LOAD XML ## --echo ############## create table audit_xml_data (a int, b varchar(64)); SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="30";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="audit_xml_data";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT load xml infile '../../std_data/loadxml.dat' into table audit_xml_data rows identified by '<row>'; SELECT @@null_audit_event_order_check; select * from audit_xml_data order by a; SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="30";;' 'MYSQL_AUDIT_TABLE_ACCESS_INSERT;db="super_test" table="audit_xml_data";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="30";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; load xml infile '../../std_data/loadxml.dat' into table audit_xml_data rows identified by '<row>'; SELECT @@null_audit_event_order_check; select * from audit_xml_data order by a; #Cleanup DROP TABLE audit_xml_data; USE mysql; DROP DATABASE super_test; DROP USER user1@localhost; --echo ######################## --echo ## INFORMATION SCHEMA ## --echo ######################## --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_GLOBAL_VARIABLE_GET;<IGNORE>;;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="0";'; --disable_result_log SELECT * FROM INFORMATION_SCHEMA.TABLES; --enable_result_log SELECT @@null_audit_event_order_check; --echo ######################## --echo ## PERFORMANCE SCHEMA ## --echo ######################## SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="16";;' 'MYSQL_AUDIT_QUERY_STATUS_END;sql_command_id="16";;' 'MYSQL_AUDIT_GENERAL_RESULT;;;' 'MYSQL_AUDIT_GENERAL_STATUS;;;' 'MYSQL_AUDIT_COMMAND_END;command_id="3";'; --disable_result_log SHOW STATUS; --enable_result_log SELECT @@null_audit_event_order_check; --echo ######################## --echo ## CONNECTION - CLEAN ## --echo ######################## CREATE USER user1; CREATE USER user2; --connect(user1_con, localhost, user1,) SELECT USER(), CURRENT_USER(); --echo # Try to change user for a given connection (user and database specified) --error ER_DBACCESS_DENIED_ERROR --change_user user2,,mysql SELECT USER(), CURRENT_USER(); connection default; --echo # Allow 'user2' to use 'mysql' database. GRANT ALL ON mysql.* TO user2; connection user1_con; --echo # Change user with 'mysql' as initial database --change_user user2,,mysql SELECT USER(), CURRENT_USER(); --echo # Bring back user1 (no database specified) --change_user user1,, SELECT USER(), CURRENT_USER(); --echo ## Reset connection ## --reset_connection SELECT USER(), CURRENT_USER(); disconnect user1_con; connection default; DROP USER user1; DROP USER user2; ## END ## --echo ############################### --echo ## CONNECTION - INSTRUMENTED ## --echo ############################### CREATE USER user1; CREATE USER user2; eval SET @@GLOBAL.null_audit_event_order_check = 'MYSQL_AUDIT_CONNECTION_PRE_AUTHENTICATE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_CONNECTION_CONNECT;;ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT --connect(user1_con, localhost, user1,) SET @@GLOBAL.null_audit_event_order_check = NULL, @@GLOBAL.null_audit_event_order_check_exact = 1; --connect(user1_con, localhost, user1,) connection default; --echo #--COM_CHANGE_USER SET @@GLOBAL.null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="17";ABORT_RET'; connection user1_con; --echo # Try to change user for a given connection (user and database specified) --error ER_DBACCESS_DENIED_ERROR --change_user user2,,mysql connection default; --echo # Allow 'user2' to use 'mysql' database. GRANT ALL ON mysql.* TO user2; connection user1_con; --echo # Change user with 'mysql' as initial database --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT --change_user user2,,mysql SELECT USER(), CURRENT_USER(); --echo # Reset connection connection default; #--COM_RESET_CONNECTION SET @@GLOBAL.null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="31";ABORT_RET'; connection user1_con; --reset_connection SELECT USER(), CURRENT_USER(); --echo ## Should no take any effect. COM_QUIT should be possible. connection default; #--COM_QUIT SET @@GLOBAL.null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="1";ABORT_RET'; connection user1_con; disconnect user1_con; connection default; SET @@GLOBAL.null_audit_event_order_check = NULL; DROP USER user1; DROP USER user2; --echo ## CONNECTION - INSTRUMENTED - END ## eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="3";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="35";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT USE mysql; SELECT @@null_audit_event_order_check; USE mysql; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; SELECT 1; --echo ########################## --echo ## CUSTOM ERROR MESSAGE ## --echo ########################## SET @@null_audit_abort_message = "Custom error text."; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; --echo ## CUSTOM ERROR MESSAGE - END ## --echo ######################### --echo ## CUSTOM ERROR RESULT ## --echo ######################### SET @@null_audit_abort_value = 123; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;;' 'MYSQL_AUDIT_GENERAL_LOG;;;' 'MYSQL_AUDIT_QUERY_START;sql_command_id="0";ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; --echo ## CUSTOM ERROR RESULT - END ## --echo ########### --echo ## PARSE ## --echo ########### --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; --replace_result $event_order_exact <expected_check_exact> eval SET @@null_audit_event_order_check_exact = $event_order_exact; --replace_result $command_start_id <expected_command_start_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_START;command_id="$command_start_id";;' 'MYSQL_AUDIT_PARSE_PREPARSE;;;' 'MYSQL_AUDIT_PARSE_POSTPARSE;;ABORT_RET'; --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; --echo ############################### --echo ## TEST CHECK - INVALID DATA ## --echo ############################### SET @@null_audit_event_order_check_exact = 1; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";;' 'MYSQL_AUDIT_COMMAND_START;command_id="XXX";'; #--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT $command_start_id INVALID_ID --error ER_AUDIT_API_ABORT SELECT 1; SELECT @@null_audit_event_order_check; --echo ######################### --echo ## COMMAND_END - ABORT ## --echo ######################### # Abort the MYSQL_AUDIT_COMMAND_END event with the my_message function - should be disabled SET @@null_audit_abort_message = "Abort with my_message."; SET @@null_audit_event_order_check_exact = 1; --replace_result $command_end_id <expected_command_end_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; # Abort the MYSQL_AUDIT_COMMAND_END event by returning a non-zero value - should be disabled SET @@null_audit_event_order_check_exact = 1; --replace_result $command_end_id <expected_command_end_id> eval SET @@null_audit_event_order_check = 'MYSQL_AUDIT_COMMAND_END;command_id="$command_end_id";ABORT_RET'; SELECT 1; SELECT @@null_audit_event_order_check; --echo ## CUSTOM ERROR MESSAGE - END ## --echo ################## --echo ## Event record ## --echo ################## SET @@null_audit_event_record_def = 'MYSQL_AUDIT_GENERAL_RESULT;MYSQL_AUDIT_COMMAND_END'; SELECT 1; --replace_regex /;command_id="[0-9]+"/;command_id="<expected_command_id>"/ SELECT @@null_audit_event_record; --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@null_audit_event_record = ''; eval UNINSTALL PLUGIN null_audit;
Close