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