-
Notifications
You must be signed in to change notification settings - Fork 4k
/
Copy pathasync_client.test
168 lines (130 loc) · 5.27 KB
/
async_client.test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
--source include/have_ssl.inc
--source include/have_openssl.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--echo #
--echo # WL#11381: Add asynchronous support into the mysql protocol
--echo #
--echo # case1: default connection with default authentication plugin
CREATE DATABASE wl11381;
CREATE USER caching_sha2@localhost IDENTIFIED BY 'caching';
GRANT ALL ON *.* TO caching_sha2@localhost;
--enable_async_client
--echo # connect as caching_sha2
connect(caching_con1,localhost,caching_sha2,caching,wl11381,,,SSL);
SELECT USER(), DATABASE();
USE wl11381;
CREATE TABLE t1(i INT, j VARCHAR(2048));
INSERT INTO t1 VALUES(1,repeat('a',1000)),(2,repeat('def',600));
SELECT * FROM t1;
--echo # case2: request a large packet
SET GLOBAL max_allowed_packet=4*1024;
SELECT SPACE(@@global.max_allowed_packet);
SET GLOBAL max_allowed_packet=default;
connection default;
disconnect caching_con1;
--echo # connect with wrong password
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error ER_ACCESS_DENIED_ERROR
connect(caching_con2,localhost,caching_sha2,caching1,wl11381,,,SSL);
--echo # check for timeout
connect(caching_con3,localhost,caching_sha2,caching,wl11381,,,SSL);
SELECT USER();
SET @@SESSION.wait_timeout = 2;
SELECT SLEEP(10);
--echo # Check that ssl_con has not disconnected
SELECT 1;
connection default;
disconnect caching_con3;
--disable_async_client
--echo # lock the account
ALTER USER caching_sha2@localhost ACCOUNT LOCK;
--enable_async_client
--echo # account is locked so connect should fail
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 3118
connect(caching_con3,localhost,caching_sha2,caching,wl11381,,,SSL);
connection default;
--disable_async_client
--echo # lock the account
ALTER USER caching_sha2@localhost ACCOUNT UNLOCK;
--enable_async_client
--echo # account is unlocked so connect should pass
connect(caching_con3,localhost,caching_sha2,caching,wl11381,,,SSL);
SELECT "connect succeeded after account is unlocked";
connection default;
disconnect caching_con3;
--disable_async_client
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--let $restart_parameters=restart: --ssl=off --loose-caching_sha2_password_private_key_path=$MYSQL_TEST_DIR/std_data/rsa_private_key.pem --loose-caching_sha2_password_public_key_path=$MYSQL_TEST_DIR/std_data/rsa_public_key.pem
--source include/restart_mysqld.inc
--enable_async_client
--echo # connect as caching_sha2 with SSL disabled
connect(caching_con4,localhost,caching_sha2,caching,wl11381,,,);
SELECT USER();
connection default;
disconnect caching_con4;
# default connection on windows is a NAMED_PIPE, on this type of connection
# async operations are not allowed, so disable it.
--disable_async_client
--echo # change to empty password
ALTER USER caching_sha2@localhost IDENTIFIED BY '';
--enable_async_client
--echo # connect as caching_sha2 with SSL disabled and empty password
connect(caching_con5,localhost,caching_sha2,,wl11381,,,);
SELECT USER();
connection default;
disconnect caching_con5;
--disable_async_client
--echo # case3: authenticate user with sha256_password
CREATE USER sha256@localhost IDENTIFIED WITH 'sha256_password' BY 'auth_string';
--let $restart_parameters=restart: --default-authentication-plugin=sha256_password
--source include/restart_mysqld.inc
--enable_async_client
--echo # connect as sha256
connect(sha256_con1,localhost,sha256,auth_string,,,,SSL,sha256_password);
SELECT USER();
connection default;
disconnect sha256_con1;
--disable_async_client
--echo # change to empty password
ALTER USER sha256@localhost IDENTIFIED BY '';
--enable_async_client
--echo # connect with empty password
connect(sha256_con2,localhost,sha256,,,,,SSL,sha256_password);
SELECT USER();
connection default;
disconnect sha256_con2;
--disable_async_client
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--let $restart_parameters=restart: --default-authentication-plugin=sha256_password --ssl=off --loose-sha256_password_private_key_path=$MYSQL_TEST_DIR/std_data/rsa_private_key.pem --loose-sha256_password_public_key_path=$MYSQL_TEST_DIR/std_data/rsa_public_key.pem
--source include/restart_mysqld.inc
--enable_async_client
--echo # connect with wrong password and SSL disabled
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error ER_ACCESS_DENIED_ERROR
connect(sha256_con3,localhost,sha256,auth_string,,,,,sha256_password);
--disable_async_client
--echo # case4: authenticate user with mysql_native_password
CREATE USER native_user@localhost IDENTIFIED WITH 'mysql_native_password' BY 'native';
--let $restart_parameters=restart: --default-authentication-plugin=mysql_native_password
--source include/restart_mysqld.inc
--enable_async_client
--echo # connect as native_user
connect(native_con1,localhost,native_user,native,,,,,mysql_native_password);
SELECT USER();
connection default;
disconnect native_con1;
--disable_async_client
--echo # Change to empty password
ALTER USER native_user@localhost IDENTIFIED BY '';
--enable_async_client
--echo # connect as native_user with empty password
connect(native_con2,localhost,native_user,,,,,,mysql_native_password);
SELECT USER();
connection default;
disconnect native_con2;
#cleanup
--disable_async_client
DROP USER sha256@localhost, native_user@localhost, caching_sha2@localhost;
DROP DATABASE wl11381;