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
198 lines
8.0 KiB
5 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;
|