1
1
--TEST--
2
- MySQL 5.6 EXPIRE PASSWORD protocol change
2
+ MySQL 5.6 / MariaDB 10.4.3 EXPIRE PASSWORD protocol change
3
3
--SKIPIF--
4
4
<?php
5
5
require_once ('skipif.inc ' );
@@ -14,22 +14,34 @@ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
14
14
if ($ link ->server_version < 50610 )
15
15
die (sprintf ("SKIP Needs MySQL 5.6.10 or newer, found MySQL %s \n" , $ link ->server_info ));
16
16
17
+ if ($ link ->server_version >= 100000 ) {
18
+ if ($ link ->server_version < 100403 )
19
+ die (sprintf ("SKIP Needs MariaDB 10.4.3 or newer, found MariaDB %s \n" , $ link ->server_info ));
20
+ $ result = $ link ->query ("select @@disconnect_on_expired_password " );
21
+ if (!$ result )
22
+ die ("SKIP Failed to query MariaDB @@disconnect_on_expired_password value " );
23
+ $ row = mysqli_fetch_row ($ result );
24
+ if ($ row [0 ] == 0 )
25
+ die ("SKIP Cannot run in MariaDB @@disconnect_on_expired_password=OFF state " );
26
+
27
+ }
28
+
17
29
if (!$ IS_MYSQLND && (mysqli_get_client_version () < 50610 )) {
18
30
die (sprintf ("SKIP Needs libmysql 5.6.10 or newer, found %s \n" , mysqli_get_client_version ()));
19
31
}
20
32
21
33
mysqli_query ($ link , 'DROP USER expiretest ' );
22
34
mysqli_query ($ link , 'DROP USER expiretest@localhost ' );
23
35
24
- if (!mysqli_query ($ link , 'CREATE USER expiretest@"%" ' ) ||
25
- !mysqli_query ($ link , 'CREATE USER expiretest@" localhost" ' )) {
36
+ if (!mysqli_query ($ link , 'CREATE USER expiretest IDENTIFIED BY \' expiredpassword \' ' ) ||
37
+ !mysqli_query ($ link , 'CREATE USER expiretest@localhost IDENTIFIED BY \' expiredpassword \' ' )) {
26
38
printf ("skip Cannot create second DB user [%d] %s " , mysqli_errno ($ link ), mysqli_error ($ link ));
27
39
mysqli_close ($ link );
28
40
die ("skip CREATE USER failed " );
29
41
}
30
42
31
- if (!mysqli_query ($ link , 'ALTER USER expiretest@"%" PASSWORD EXPIRE ' ) ||
32
- !mysqli_query ($ link , 'ALTER USER expiretest@" localhost" PASSWORD EXPIRE ' )) {
43
+ if (!mysqli_query ($ link , 'ALTER USER expiretest PASSWORD EXPIRE ' ) ||
44
+ !mysqli_query ($ link , 'ALTER USER expiretest@localhost PASSWORD EXPIRE ' )) {
33
45
printf ("skip Cannot modify second DB user [%d] %s " , mysqli_errno ($ link ), mysqli_error ($ link ));
34
46
mysqli_close ($ link );
35
47
die ("skip ALTER USER failed " );
@@ -54,7 +66,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
54
66
require_once ('table.inc ' );
55
67
56
68
/* default */
57
- if (!$ link = my_mysqli_connect ($ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
69
+ if (!$ link = my_mysqli_connect ($ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
58
70
printf ("[001] Cannot connect [%d] %s \n" ,
59
71
mysqli_connect_errno (), mysqli_connect_error ());
60
72
} else {
@@ -65,7 +77,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
65
77
/* explicitly requesting default */
66
78
$ link = mysqli_init ();
67
79
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 0 );
68
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
80
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
69
81
printf ("[003] Cannot connect [%d] %s \n" ,
70
82
mysqli_connect_errno (), mysqli_connect_error ());
71
83
} else {
@@ -76,7 +88,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
76
88
/* allow connect */
77
89
$ link = mysqli_init ();
78
90
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 1 );
79
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
91
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
80
92
printf ("[005] Cannot connect [%d] %s \n" ,
81
93
mysqli_connect_errno (), mysqli_connect_error ());
82
94
} else {
@@ -88,7 +100,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
88
100
/* allow connect, fix pw */
89
101
$ link = mysqli_init ();
90
102
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 1 );
91
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
103
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
92
104
printf ("[007] Cannot connect [%d] %s \n" ,
93
105
mysqli_connect_errno (), mysqli_connect_error ());
94
106
} else {
@@ -122,11 +134,11 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
122
134
mysqli_query ($ link , 'DROP USER expiretest@localhost ' );
123
135
?>
124
136
--EXPECTF--
125
- Warning: mysqli%sconnect(): (HY000/1862 ): %s in %s on line %d
126
- [001] Cannot connect [1862 ] %s
137
+ Warning: mysqli%sconnect(): (HY000/%d ): %s in %s on line %d
138
+ [001] Cannot connect [%d ] %s
127
139
128
- Warning: mysqli%sconnect(): (HY000/1862 ): %s in %s on line %d
129
- [003] Cannot connect [1862 ] %s
140
+ Warning: mysqli%sconnect(): (HY000/%d ): %s in %s on line %d
141
+ [003] Cannot connect [%d ] %s
130
142
[006] Connect allowed, query fail, [1820] %s
131
143
[008] Connect allowed, pw set, [0%A
132
144
array(1) {
0 commit comments