用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
8.0 KiB

3 months ago
#
# WL#12138 -- Add Admin Port
#
# Create the user u1
CREATE USER u1;
# Grant the user u1 the privilege SERVICE_CONNECTION_ADMIN
GRANT SERVICE_CONNECTION_ADMIN ON *.* TO u1;
# Create the user u2
CREATE USER u2;
# Create the user u3
CREATE USER u3;
# Grant the user u3 the privilege SERVICE_CONNECTION_ADMIN
GRANT SUPER ON *.* TO u3;
Warnings:
Warning 1287 The SUPER privilege identifier is deprecated
# Stop DB server which was created by MTR default
# Test case 1
# Check that specially treated value :: is not allowed as part of
# option admin-address.
Pattern "Invalid value for command line option admin-address: '::'" found
# Test case 2
# Check that specially treated value * is not allowed as part of
# option admin-address.
Pattern "Invalid value for command line option admin-address: '*'" found
# Test case 3
# Check that specially treated value 0.0.0.0 is not allowed as part of
# option admin-address.
Pattern "Invalid value for command line option admin-address: '0.0.0.0'" found
# Test case 4
# Check that non-existent host name specified as a value of the option admin-address results in error on server starting up.
# option admin-address.
Pattern "Can't start server: cannot resolve hostname" found
# Starting up server with --admin-address=127.0.0.1 --max-connections=2
# restart: --admin-address=127.0.0.1 --admin-port=ADMIN_PORT --max-connections=2
# Test case 5
# Check that ordinary connection using tcp protocol can be established
connect ordinary_tcp_con,localhost,root,,,,,TCP;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
disconnect ordinary_tcp_con;
# Check error when starting a server having admin port which is busy
Pattern "Can't start server: Bind on TCP/IP port: (Address .*in use|Only one usage of each socket address .* normally permitted)" found
# Test case 6
# Check that ordinary connection using default connection method can be established
connect ordinary_con,localhost,root,,,,,;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
disconnect ordinary_con;
# Test case 7
# Check that admin connection using tcp protocol can be established
connect admin_tcp_con,127.0.0.1,root,,,$ADMIN_PORT,,TCP;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
# Check that a system message about the admin interface is written
# to the error log
Pattern "\[System\] \[MY\-[0-9]+\] \[Server\] Admin interface ready for connections, address: \'127.0.0.1\' port: ADMIN_PORT" found
disconnect admin_tcp_con;
# Test case 8
# Check that the user u1 can establish connection to admin interface since
# this user has the privilege SERVICE_CONNECTION_ADMIN
connect admin_tcp_con_u1,127.0.0.1,u1,,,$ADMIN_PORT,,TCP;
SELECT CURRENT_USER();
CURRENT_USER()
u1@%
disconnect admin_tcp_con_u1;
# Test case 9
# Check that the user u2 can't establish connection to admin interface since
# this user doesn't have the privilege SERVICE_CONNECTION_ADMIN
connect(127.0.0.1,u2,,test,ADMIN_PORT,MASTER_SOCKET);
connect admin_tcp_con_u2,127.0.0.1,u2,,,$ADMIN_PORT,,TCP;
ERROR 42000: Access denied; you need (at least one of) the SERVICE_CONNECTION_ADMIN privilege(s) for this operation
# Check that the user u3 can't establish connection to admin interface since
# this user doesn't have the privilege SERVICE_CONNECTION_ADMIN
connect(127.0.0.1,u3,,test,ADMIN_PORT,MASTER_SOCKET);
connect admin_tcp_con_u3,127.0.0.1,u3,,,$ADMIN_PORT,,TCP;
ERROR 42000: Access denied; you need (at least one of) the SERVICE_CONNECTION_ADMIN privilege(s) for this operation
connection default;
# Show how many active connections currently exist
SHOW STATUS LIKE 'Threads_connected';
Variable_name Value
Threads_connected 1
# Test case 10
# Check that the parameter max_connections does affect to an ordinary
# connection and doesn't affect to a connection made to admin interface
connect ordinary_con_1,localhost,u1,,,,,;
# Show how many active connections exist after the connection
# ordinary_con_1 established
SHOW STATUS LIKE 'Threads_connected';
Variable_name Value
Threads_connected 2
# Since server was started with the option --max-connections=2 and
# there are already two active connections (the first one is for
# the default connection and the second one is for the connection
# ordinary_con_1) an attempt to connect to the server results in
# error ER_CON_COUNT_ERROR
connect(localhost,u2,,test,MASTER_PORT,MASTER_SOCKET);
connect ordinary_con_2,localhost,u2,,,,,;
ERROR 08004: Too many connections
# Check that attempt to establish the third connection to admin interface
# doesn't result in error
connect admin_con_3,localhost,u1,,,$ADMIN_PORT,,TCP;
# Check that total number of concurrent connection made to admin interface
# is not limited by the value max-connections + 1
connect admin_con_4,localhost,u1,,,$ADMIN_PORT,,TCP;
connection ordinary_con_1;
disconnect ordinary_con_1;
connection admin_con_3;
disconnect admin_con_3;
connection admin_con_4;
disconnect admin_con_4;
connection default;
# Test case 11
# Check that a dedicated thread for handling connection requests
# on admin interface is not running in case a server started without
# the option --create-admin-listener-thread=true
SELECT name, type FROM performance_schema.threads WHERE name = 'thread/sql/admin_interface';
name type
# Stop DB server
# Starting up server with --admin-address=127.0.0.1,
# handle connections on admin interface by a dedicated thread
# restart: --admin-address=127.0.0.1 --admin-port=ADMIN_PORT --create-admin-listener-thread=true
# Test case 12
# Check that a dedicated thread for handling connection requests on
# admin interface is running in case a server started with the option
# --create-admin-listener-thread=true
SELECT name, type FROM performance_schema.threads WHERE name = 'thread/sql/admin_interface';
name type
thread/sql/admin_interface BACKGROUND
# Test case 13
# Check that admin connection using tcp protocol can be established
# when a server is started with option --create-admin-listener-thread=true
connect admin_tcp_con,127.0.0.1,root,,,$ADMIN_PORT,,TCP;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
disconnect admin_tcp_con;
# Test case 14
# Check that admin interface is turned off
# in case a server started with the --skip-networking option
connection default;
# Stop DB server
# Starting up server with --admin-address=127.0.0.1 --skip-networking
# restart: --admin-address=127.0.0.1 --admin-port=ADMIN_PORT --skip-networking
connect(127.0.0.1,root,,test,ADMIN_PORT,MASTER_SOCKET);
connect admin_tcp_con,127.0.0.1,root,,,$ADMIN_PORT,,TCP;
# Test case 15
# Check that admin interface is turned off in case a server started
# with the --skip-grant-tables option. If the server is started with
# the --skip-grant-tables option to disable authentication checks,
# the server enables --skip-networking automatically to prevent remote
# connections. Therefore, listening on admin interface must be disabled too.
connection default;
# Stop DB server
# Starting up server with --admin-address=127.0.0.1 --skip-grant-tables
# restart: --admin-address=127.0.0.1 --admin-port=ADMIN_PORT --skip-grant-tables
connect(127.0.0.1,root,,test,ADMIN_PORT,MASTER_SOCKET);
connect admin_tcp_con,127.0.0.1,root,,,$ADMIN_PORT,,TCP;
connection default;
# Stop DB server
# Test case 16
# Check that admin interface is not setup when the option
# --admin-port is specified without --admin-address
# restart: --admin-port=ADMIN_PORT
connect ordinary_tcp_con,localhost,root,,,,,TCP;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
SELECT @@admin_address, @@admin_port;
@@admin_address @@admin_port
NULL ADMIN_PORT
disconnect ordinary_tcp_con;
connect(127.0.0.1,root,,test,ADMIN_PORT,MASTER_SOCKET);
connect admin_tcp_con,127.0.0.1,root,,,$ADMIN_PORT,,TCP;
# Test case 17
# Check that we can connect to the server if admin
# interface is set up on loopback IPV6 address
connection default;
# restart: --skip-name-resolve --admin-address=::1 --admin-port=ADMIN_PORT
connect admin_tcp_con_ipv6,::1,u1,,,$ADMIN_PORT,,TCP;
SELECT @@admin_address, @@admin_port;
@@admin_address @@admin_port
::1 ADMIN_PORT
disconnect admin_tcp_con_ipv6;
connection default;
# Stop DB server
#
# Starting mysqld in the regular mode...
#
connection default;
# restart
# Cleaning up
DROP USER u1;
DROP USER u2;
DROP USER u3;