MDEV-7500 thread_handling option in my.cnf is not passing "connect events" to audit plugin.
The MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT() call moved to the login_connection() function. So that it'll be invoked in any thread handling mode.
This commit is contained in:
parent
1ae05db49c
commit
69ed429aff
356
mysql-test/suite/plugins/r/thread_pool_server_audit.result
Normal file
356
mysql-test/suite/plugins/r/thread_pool_server_audit.result
Normal file
@ -0,0 +1,356 @@
|
|||||||
|
install plugin server_audit soname 'server_audit';
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_events
|
||||||
|
server_audit_excl_users
|
||||||
|
server_audit_file_path server_audit.log
|
||||||
|
server_audit_file_rotate_now OFF
|
||||||
|
server_audit_file_rotate_size 1000000
|
||||||
|
server_audit_file_rotations 9
|
||||||
|
server_audit_incl_users
|
||||||
|
server_audit_logging OFF
|
||||||
|
server_audit_mode 0
|
||||||
|
server_audit_output_type file
|
||||||
|
server_audit_query_log_limit 1024
|
||||||
|
server_audit_syslog_facility LOG_USER
|
||||||
|
server_audit_syslog_ident mysql-server_auditing
|
||||||
|
server_audit_syslog_info
|
||||||
|
server_audit_syslog_priority LOG_INFO
|
||||||
|
set global server_audit_file_path=null;
|
||||||
|
set global server_audit_incl_users=null;
|
||||||
|
set global server_audit_file_path='server_audit.log';
|
||||||
|
set global server_audit_output_type=file;
|
||||||
|
set global server_audit_logging=on;
|
||||||
|
connect(localhost,no_such_user,,mysql,MASTER_PORT,MASTER_SOCKET);
|
||||||
|
ERROR 28000: Access denied for user 'no_such_user'@'localhost' (using password: NO)
|
||||||
|
set global server_audit_incl_users='odin, dva, tri';
|
||||||
|
create table t1 (id int);
|
||||||
|
set global server_audit_incl_users='odin, root, dva, tri';
|
||||||
|
create table t2 (id int);
|
||||||
|
set global server_audit_excl_users='odin, dva, tri';
|
||||||
|
Warnings:
|
||||||
|
Warning 1 User 'odin' is in the server_audit_incl_users, so wasn't added.
|
||||||
|
Warning 1 User 'dva' is in the server_audit_incl_users, so wasn't added.
|
||||||
|
Warning 1 User 'tri' is in the server_audit_incl_users, so wasn't added.
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
set global server_audit_incl_users='odin, root, dva, tri';
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
alter table t1 rename renamed_t1;
|
||||||
|
set global server_audit_events='connect,query';
|
||||||
|
select 1,
|
||||||
|
2,
|
||||||
|
3;
|
||||||
|
1 2 3
|
||||||
|
1 2 3
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
1
|
||||||
|
2
|
||||||
|
select * from t_doesnt_exist;
|
||||||
|
ERROR 42S02: Table 'test.t_doesnt_exist' doesn't exist
|
||||||
|
syntax_error_query;
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'syntax_error_query' at line 1
|
||||||
|
drop table renamed_t1, t2;
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_events CONNECT,QUERY
|
||||||
|
server_audit_excl_users
|
||||||
|
server_audit_file_path server_audit.log
|
||||||
|
server_audit_file_rotate_now OFF
|
||||||
|
server_audit_file_rotate_size 1000000
|
||||||
|
server_audit_file_rotations 9
|
||||||
|
server_audit_incl_users odin, root, dva, tri
|
||||||
|
server_audit_logging ON
|
||||||
|
server_audit_mode 0
|
||||||
|
server_audit_output_type file
|
||||||
|
server_audit_query_log_limit 1024
|
||||||
|
server_audit_syslog_facility LOG_USER
|
||||||
|
server_audit_syslog_ident mysql-server_auditing
|
||||||
|
server_audit_syslog_info
|
||||||
|
server_audit_syslog_priority LOG_INFO
|
||||||
|
set global server_audit_mode=1;
|
||||||
|
set global server_audit_events='';
|
||||||
|
create database sa_db;
|
||||||
|
create table t1 (id2 int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id2
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
use sa_db;
|
||||||
|
create table sa_t1(id int);
|
||||||
|
insert into sa_t1 values (1), (2);
|
||||||
|
drop table sa_t1;
|
||||||
|
drop database sa_db;
|
||||||
|
create database sa_db;
|
||||||
|
use sa_db;
|
||||||
|
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||||
|
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||||
|
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||||
|
CREATE USER u3 IDENTIFIED BY '';
|
||||||
|
drop user u1, u2, u3;
|
||||||
|
set global server_audit_events='query_ddl';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
(select 2);
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*! select 2*/;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*comment*/ select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_ddl,query_dml';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_dml';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
(select 2);
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*! select 2*/;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*comment*/ select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_dcl';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||||
|
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||||
|
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||||
|
SET PASSWORD FOR u1=<secret>;
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=<secret>' at line 1
|
||||||
|
CREATE USER u3 IDENTIFIED BY '';
|
||||||
|
drop user u1, u2, u3;
|
||||||
|
select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
(select 2);
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*! select 2*/;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
/*comment*/ select 2;
|
||||||
|
2
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='';
|
||||||
|
set global server_audit_query_log_limit= 15;
|
||||||
|
select (1), (2), (3), (4);
|
||||||
|
1 2 3 4
|
||||||
|
1 2 3 4
|
||||||
|
select 'A', 'B', 'C', 'D';
|
||||||
|
A B C D
|
||||||
|
A B C D
|
||||||
|
set global server_audit_query_log_limit= 1024;
|
||||||
|
drop database sa_db;
|
||||||
|
set global server_audit_file_path='.';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_current_log HOME_DIR/server_audit.log
|
||||||
|
set global server_audit_file_path='';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_current_log server_audit.log
|
||||||
|
set global server_audit_file_path=' ';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_current_log server_audit.log
|
||||||
|
set global server_audit_file_path='nonexisting_dir/';
|
||||||
|
Warnings:
|
||||||
|
Warning 1 SERVER AUDIT plugin can't create file 'nonexisting_dir/'.
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_current_log server_audit.log
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
Variable_name Value
|
||||||
|
server_audit_events
|
||||||
|
server_audit_excl_users
|
||||||
|
server_audit_file_path
|
||||||
|
server_audit_file_rotate_now OFF
|
||||||
|
server_audit_file_rotate_size 1000000
|
||||||
|
server_audit_file_rotations 9
|
||||||
|
server_audit_incl_users odin, root, dva, tri
|
||||||
|
server_audit_logging ON
|
||||||
|
server_audit_mode 1
|
||||||
|
server_audit_output_type file
|
||||||
|
server_audit_query_log_limit 1024
|
||||||
|
server_audit_syslog_facility LOG_USER
|
||||||
|
server_audit_syslog_ident mysql-server_auditing
|
||||||
|
server_audit_syslog_info
|
||||||
|
server_audit_syslog_priority LOG_INFO
|
||||||
|
uninstall plugin server_audit;
|
||||||
|
Warnings:
|
||||||
|
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_logging=on',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,0,CONNECT,mysql,,0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,0,DISCONNECT,mysql,,0
|
||||||
|
TIME,HOSTNAME,no_such_user,localhost,ID,0,FAILED_CONNECT,,,ID
|
||||||
|
TIME,HOSTNAME,no_such_user,localhost,ID,0,DISCONNECT,,,0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_incl_users=\'odin, root, dva, tri\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,test,t2,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create table t2 (id int)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_excl_users=\'odin, dva, tri\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'SHOW WARNINGS',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t1 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_incl_users=\'odin, root, dva, tri\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t2,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t2,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,ALTER,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'alter table t1 rename renamed_t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'connect,query\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select 1, 2, 3',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t_doesnt_exist',ID
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'syntax_error_query',ID
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'drop table renamed_t1, t2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'show variables like \'server_audit%\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_mode=1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create database sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,0,CONNECT,test,,0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create table t1 (id2 int)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t1 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,DROP,test,t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'drop table t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'use sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,CREATE,sa_db,sa_t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table sa_t1(id int)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,sa_db,sa_t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into sa_t1 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,DROP,sa_db,sa_t1,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table sa_t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,mysql,proc,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proc,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,event,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop database sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,0,DISCONNECT,sa_db,,0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'create database sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'use sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u1 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'GRANT ALL ON sa_db TO u2 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1 = PASSWORD(*****)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u3 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,user,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,db,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,tables_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,columns_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,procs_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proxies_priv,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop user u1, u2, u3',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table t1(id int)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'create table t1(id int)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into t1 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select * from t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select 2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop table t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'insert into t1 values (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select * from t1',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select 2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'(select 2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'/*! select 2*/',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'/*comment*/ select 2',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u1 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'GRANT ALL ON sa_db TO u2 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1 = PASSWORD(*****)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SET PASSWORD FOR u1=<secret>',ID
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'CREATE USER u3 IDENTIFIED BY *****',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop user u1, u2, u3',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_events=\'\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global serv',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select (1), (2)',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'select \'A\', ',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_query_log_limit= 1024',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,READ,mysql,proc,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,proc,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,event,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'drop database sa_db',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'.\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'.\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\' \'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\' \'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'nonexisting_dir/\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'set global server_audit_file_path=\'nonexisting_dir/\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'SHOW WARNINGS',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show status like \'server_audit_current_log\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'show variables like \'server_audit%\'',0
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,plugin,
|
||||||
|
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,sa_db,'uninstall plugin server_audit',0
|
2
mysql-test/suite/plugins/t/thread_pool_server_audit.opt
Normal file
2
mysql-test/suite/plugins/t/thread_pool_server_audit.opt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
--thread_handling=pool-of-threads
|
||||||
|
|
142
mysql-test/suite/plugins/t/thread_pool_server_audit.test
Normal file
142
mysql-test/suite/plugins/t/thread_pool_server_audit.test
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_pool_of_threads.inc
|
||||||
|
|
||||||
|
if (!$SERVER_AUDIT_SO) {
|
||||||
|
skip No SERVER_AUDIT plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
install plugin server_audit soname 'server_audit';
|
||||||
|
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
set global server_audit_file_path=null;
|
||||||
|
set global server_audit_incl_users=null;
|
||||||
|
set global server_audit_file_path='server_audit.log';
|
||||||
|
set global server_audit_output_type=file;
|
||||||
|
set global server_audit_logging=on;
|
||||||
|
connect (con1,localhost,root,,mysql);
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
--sleep 2
|
||||||
|
--sleep 2
|
||||||
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||||
|
--error ER_ACCESS_DENIED_ERROR
|
||||||
|
connect (con1,localhost,no_such_user,,mysql);
|
||||||
|
connection default;
|
||||||
|
--sleep 2
|
||||||
|
set global server_audit_incl_users='odin, dva, tri';
|
||||||
|
create table t1 (id int);
|
||||||
|
set global server_audit_incl_users='odin, root, dva, tri';
|
||||||
|
create table t2 (id int);
|
||||||
|
set global server_audit_excl_users='odin, dva, tri';
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
set global server_audit_incl_users='odin, root, dva, tri';
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
select * from t2;
|
||||||
|
alter table t1 rename renamed_t1;
|
||||||
|
set global server_audit_events='connect,query';
|
||||||
|
select 1,
|
||||||
|
2,
|
||||||
|
3;
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
select * from t2;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
select * from t_doesnt_exist;
|
||||||
|
--error 1064
|
||||||
|
syntax_error_query;
|
||||||
|
drop table renamed_t1, t2;
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
set global server_audit_mode=1;
|
||||||
|
set global server_audit_events='';
|
||||||
|
create database sa_db;
|
||||||
|
connect (con1,localhost,root,,test);
|
||||||
|
connection con1;
|
||||||
|
--sleep 2
|
||||||
|
--sleep 2
|
||||||
|
create table t1 (id2 int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
use sa_db;
|
||||||
|
create table sa_t1(id int);
|
||||||
|
insert into sa_t1 values (1), (2);
|
||||||
|
drop table sa_t1;
|
||||||
|
drop database sa_db;
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
--sleep 2
|
||||||
|
--sleep 2
|
||||||
|
create database sa_db;
|
||||||
|
use sa_db;
|
||||||
|
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||||
|
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||||
|
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||||
|
CREATE USER u3 IDENTIFIED BY '';
|
||||||
|
drop user u1, u2, u3;
|
||||||
|
|
||||||
|
set global server_audit_events='query_ddl';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
select 2;
|
||||||
|
(select 2);
|
||||||
|
/*! select 2*/;
|
||||||
|
/*comment*/ select 2;
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_ddl,query_dml';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
select 2;
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_dml';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
select 2;
|
||||||
|
(select 2);
|
||||||
|
/*! select 2*/;
|
||||||
|
/*comment*/ select 2;
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='query_dcl';
|
||||||
|
create table t1(id int);
|
||||||
|
insert into t1 values (1), (2);
|
||||||
|
select * from t1;
|
||||||
|
CREATE USER u1 IDENTIFIED BY 'pwd-123';
|
||||||
|
GRANT ALL ON sa_db TO u2 IDENTIFIED BY "pwd-321";
|
||||||
|
SET PASSWORD FOR u1 = PASSWORD('pwd 098');
|
||||||
|
--error 1064
|
||||||
|
SET PASSWORD FOR u1=<secret>;
|
||||||
|
CREATE USER u3 IDENTIFIED BY '';
|
||||||
|
drop user u1, u2, u3;
|
||||||
|
select 2;
|
||||||
|
(select 2);
|
||||||
|
/*! select 2*/;
|
||||||
|
/*comment*/ select 2;
|
||||||
|
drop table t1;
|
||||||
|
set global server_audit_events='';
|
||||||
|
|
||||||
|
set global server_audit_query_log_limit= 15;
|
||||||
|
select (1), (2), (3), (4);
|
||||||
|
select 'A', 'B', 'C', 'D';
|
||||||
|
set global server_audit_query_log_limit= 1024;
|
||||||
|
drop database sa_db;
|
||||||
|
|
||||||
|
set global server_audit_file_path='.';
|
||||||
|
--replace_regex /\.[\\\/]/HOME_DIR\//
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
set global server_audit_file_path='';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
set global server_audit_file_path=' ';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
set global server_audit_file_path='nonexisting_dir/';
|
||||||
|
show status like 'server_audit_current_log';
|
||||||
|
show variables like 'server_audit%';
|
||||||
|
uninstall plugin server_audit;
|
||||||
|
|
||||||
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
# replace the timestamp and the hostname with constant values
|
||||||
|
--replace_regex /[0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\,[^,]*\,/TIME,HOSTNAME,/ /\,[1-9][0-9]*\,/,1,/ /\,[1-9][0-9]*/,ID/
|
||||||
|
cat_file $MYSQLD_DATADIR/server_audit.log;
|
||||||
|
remove_file $MYSQLD_DATADIR/server_audit.log;
|
||||||
|
|
@ -1017,7 +1017,7 @@ bool setup_connection_thread_globals(THD *thd)
|
|||||||
bool login_connection(THD *thd)
|
bool login_connection(THD *thd)
|
||||||
{
|
{
|
||||||
NET *net= &thd->net;
|
NET *net= &thd->net;
|
||||||
int error;
|
int error= 0;
|
||||||
DBUG_ENTER("login_connection");
|
DBUG_ENTER("login_connection");
|
||||||
DBUG_PRINT("info", ("login_connection called by thread %lu",
|
DBUG_PRINT("info", ("login_connection called by thread %lu",
|
||||||
thd->thread_id));
|
thd->thread_id));
|
||||||
@ -1036,7 +1036,8 @@ bool login_connection(THD *thd)
|
|||||||
my_sleep(1000); /* must wait after eof() */
|
my_sleep(1000); /* must wait after eof() */
|
||||||
#endif
|
#endif
|
||||||
statistic_increment(aborted_connects,&LOCK_status);
|
statistic_increment(aborted_connects,&LOCK_status);
|
||||||
DBUG_RETURN(1);
|
error=1;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
/* Connect completed, set read/write timeouts back to default */
|
/* Connect completed, set read/write timeouts back to default */
|
||||||
my_net_set_read_timeout(net, thd->variables.net_read_timeout);
|
my_net_set_read_timeout(net, thd->variables.net_read_timeout);
|
||||||
@ -1046,10 +1047,13 @@ bool login_connection(THD *thd)
|
|||||||
if (increment_connection_count(thd, TRUE))
|
if (increment_connection_count(thd, TRUE))
|
||||||
{
|
{
|
||||||
my_error(ER_OUTOFMEMORY, MYF(0), 2*sizeof(USER_STATS));
|
my_error(ER_OUTOFMEMORY, MYF(0), 2*sizeof(USER_STATS));
|
||||||
DBUG_RETURN(1);
|
error= 1;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_RETURN(0);
|
exit:
|
||||||
|
MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT(thd);
|
||||||
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1187,7 +1191,6 @@ bool thd_prepare_connection(THD *thd)
|
|||||||
bool rc;
|
bool rc;
|
||||||
lex_start(thd);
|
lex_start(thd);
|
||||||
rc= login_connection(thd);
|
rc= login_connection(thd);
|
||||||
MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT(thd);
|
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user