139 lines
5.2 KiB
Plaintext
139 lines
5.2 KiB
Plaintext
## This is test file for connection authentication using mysqlx.
|
|
##
|
|
--source include/restart_mysqld.inc
|
|
|
|
--source include/xplugin_preamble.inc
|
|
--source include/xplugin_create_user.inc
|
|
call mtr.add_suppression("Plugin mysqlx reported: '3.1: Unhandled message of type 12'");
|
|
call mtr.add_suppression("Plugin mysqlx reported: '4.1: Unhandled message of type 12'");
|
|
call mtr.add_suppression("Plugin mysqlx reported: '5.1: Unhandled message of type 12'");
|
|
|
|
|
|
## Test starts here
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection.tmp
|
|
-->sql
|
|
create user killsession@localhost identified by 'killsession';
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
-->endsql
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection_current_user.tmp
|
|
-->sql
|
|
select user(),current_user(),@@bind_address;
|
|
-->endsql
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection.processlist.tmp
|
|
-->fatalerrors
|
|
-->sql
|
|
set @current := connection_id();
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
kill %MYSQLTEST_CONNECTION_ID%;
|
|
-->endsql
|
|
-->expecterror ER_QUERY_INTERRUPTED
|
|
-->sql
|
|
kill @current;
|
|
-->endsql
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection_killiunprivileged.tmp
|
|
-->sql
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
-->endsql
|
|
-->expecterror ER_KILL_DENIED_ERROR
|
|
-->sql
|
|
kill %MYSQLTEST_CONNECTION_ID%;
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
-->endsql
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection_killmysqlxsession.tmp
|
|
-->fatalerrors
|
|
-->sql
|
|
set @current := connection_id();
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
-->endsql
|
|
-->expecterror ER_QUERY_INTERRUPTED
|
|
-->sql
|
|
kill @current;
|
|
-->endsql
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-connection_killinvalid.tmp
|
|
-->fatalerrors
|
|
-->sql
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
-->endsql
|
|
-->expecterror ER_NO_SUCH_THREAD
|
|
-->sql
|
|
kill 5126;
|
|
-->endsql
|
|
EOF
|
|
|
|
|
|
--replace_regex /localhost:[0-9]*/localhost/ /Execute/Query/
|
|
--exec $MYSQLXTEST -u x_root --password='' --file=$MYSQL_TMP_DIR/mysqlx-connection.tmp 2>&1
|
|
|
|
###try killing with unprivileged user both mysqlx and mysql session ids using mysqlx protocol
|
|
###processlist should show the current session info even privileges are minimal
|
|
let $MYSQLTEST_CONNID_1=`select connection_id()`;
|
|
--replace_regex /localhost:[0-9]*/localhost/ /kill [0-9]+/kill $CONNECTION_ID/ /thread [0-9]+/thread $CONNECTION_ID/
|
|
--exec $MYSQLXTEST -u killsession --password='killsession' --file=$MYSQL_TMP_DIR/mysqlx-connection_killiunprivileged.tmp -v%MYSQLTEST_CONNECTION_ID%=$MYSQLTEST_CONNID_1 2>&1
|
|
|
|
--connection default
|
|
let $wait_for_status_variable =
|
|
'Mysqlx_sessions_closed',
|
|
'Mysqlx_sessions';
|
|
let $wait_for_status_value = 2, 0;
|
|
source ../include/wait_for_status_variables.inc;
|
|
###try killing sessionid which doesn't exists when mysqlxplugin installed using mysqlx protocol
|
|
###show processlist returns 0 rows effected even more rows are returned Bug#21392187
|
|
--replace_regex /localhost:[0-9]*/localhost/ /Execute/Query/
|
|
--exec $MYSQLXTEST -u x_root --password='' --file=$MYSQL_TMP_DIR/mysqlx-connection_killinvalid.tmp 2>&1
|
|
|
|
--connection default
|
|
let $wait_for_status_variable =
|
|
'Mysqlx_sessions_closed',
|
|
'Mysqlx_sessions';
|
|
let $wait_for_status_value = 3, 0;
|
|
source ../include/wait_for_status_variables.inc;
|
|
--connect(con1,localhost,x_root,,)
|
|
let $MYSQLTEST_CONNID_2=`select connection_id()`;
|
|
###try killing both mysqlx and mysql session ids using mysqlx protocol (expect error from getting killed)
|
|
--replace_regex /localhost:[0-9]*/localhost/ /kill [0-9]+/kill CONNECTION_ID/ /Execute/Query/
|
|
--exec $MYSQLXTEST --expect-error CR_SERVER_GONE_ERROR -u x_root --password='' --file=$MYSQL_TMP_DIR/mysqlx-connection.processlist.tmp -v%MYSQLTEST_CONNECTION_ID%=$MYSQLTEST_CONNID_2 2>&1
|
|
|
|
--connection default
|
|
let $wait_for_status_variable =
|
|
'Mysqlx_sessions_fatal_error',
|
|
'Mysqlx_sessions';
|
|
let $wait_for_status_value = 1, 0;
|
|
source ../include/wait_for_status_variables.inc;
|
|
--replace_regex /Execute/Query/
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
|
|
###kill mysqlx protocol session using mysqlx protocol when mysqlxplugin installed (expect error again)
|
|
--replace_regex /localhost:[0-9]*/localhost/ /Execute/Query/
|
|
--exec $MYSQLXTEST --expect-error CR_SERVER_GONE_ERROR -u x_root --password='' --file=$MYSQL_TMP_DIR/mysqlx-connection_killmysqlxsession.tmp 2>&1
|
|
|
|
--connection default
|
|
let $wait_for_status_variable =
|
|
'Mysqlx_sessions_fatal_error',
|
|
'Mysqlx_sessions';
|
|
let $wait_for_status_value = 2, 0;
|
|
source ../include/wait_for_status_variables.inc;
|
|
--replace_regex /Execute/Query/
|
|
select USER,COMMAND,STATE from information_schema.processlist order by ID desc;
|
|
##expect Mysqlx_sessions_fatal_error incremented when killing its own session
|
|
show status like 'Mysqlx_sessions%';
|
|
|
|
## Cleanup
|
|
drop user killsession@localhost;
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection_current_user.tmp
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection.tmp
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection_killinvalid.tmp
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection_killmysqlxsession.tmp
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection.processlist.tmp
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-connection_killiunprivileged.tmp
|
|
--source include/xplugin_drop_user.inc
|