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,17 +66,18 @@ 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 {
61
73
$ link ->query ("SELECT id FROM test WHERE id = 1 " );
62
74
printf ("[002] Connect should fail, [%d] %s \n" , $ link ->errno , $ link ->error );
63
75
}
76
+
64
77
/* explicitly requesting default */
65
78
$ link = mysqli_init ();
66
79
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 0 );
67
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
80
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
68
81
printf ("[003] Cannot connect [%d] %s \n" ,
69
82
mysqli_connect_errno (), mysqli_connect_error ());
70
83
} else {
@@ -75,7 +88,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
75
88
/* allow connect */
76
89
$ link = mysqli_init ();
77
90
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 1 );
78
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
91
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
79
92
printf ("[005] Cannot connect [%d] %s \n" ,
80
93
mysqli_connect_errno (), mysqli_connect_error ());
81
94
} else {
@@ -87,7 +100,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
87
100
/* allow connect, fix pw */
88
101
$ link = mysqli_init ();
89
102
$ link ->options (MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS , 1 );
90
- if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , "" , $ db , $ port , $ socket )) {
103
+ if (!my_mysqli_real_connect ($ link , $ host , 'expiretest ' , ' expiredpassword ' , $ db , $ port , $ socket )) {
91
104
printf ("[007] Cannot connect [%d] %s \n" ,
92
105
mysqli_connect_errno (), mysqli_connect_error ());
93
106
} else {
@@ -123,11 +136,11 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
123
136
mysqli_query ($ link , 'DROP USER expiretest@localhost ' );
124
137
?>
125
138
--EXPECTF--
126
- Warning: mysqli%sconnect(): (HY000/1862 ): %s in %s on line %d
127
- [001] Cannot connect [1862 ] %s
139
+ Warning: mysqli%sconnect(): (HY000/%d ): %s in %s on line %d
140
+ [001] Cannot connect [%d ] %s
128
141
129
- Warning: mysqli%sconnect(): (HY000/1862 ): %s in %s on line %d
130
- [003] Cannot connect [1862 ] %s
142
+ Warning: mysqli%sconnect(): (HY000/%d ): %s in %s on line %d
143
+ [003] Cannot connect [%d ] %s
131
144
[006] Connect allowed, query fail, [1820] %s
132
145
[008] Connect allowed, pw set, [0%A
133
146
array(1) {
0 commit comments