Bug #11766641: 59792: BIN/MYSQL -UUNKNOWN -PUNKNOWN

.-> USING PASSWORD: NO

The server was always setting the flag for using password to NO and
then relying on the server authentication plugin to update it if it uses
a password.
This creates compatibility problems with 5.1 when rejecting a 
nonexistent user login.
Set the default for the password supplied flag for non-existing users
as the default plugin (native password authentication) would do it
for compatibility reasons.
Test case added.
federated.result updated with the correct error message.
This commit is contained in:
Georgi Kodinov 2011-05-16 19:46:44 +03:00
parent f0594c55f9
commit 3b69f27e59
4 changed files with 32 additions and 2 deletions

View File

@ -447,4 +447,12 @@ ORDER BY COLUMN_NAME;
IS_NULLABLE COLUMN_NAME
YES authentication_string
YES plugin
#
# Bug # 11766641: 59792: BIN/MYSQL -UUNKNOWN -PUNKNOWN
# .-> USING PASSWORD: NO
#
# shoud contain "using password=yes"
ERROR 1045 (28000): Access denied for user 'unknown'@'localhost' (using password: YES)
# shoud contain "using password=no"
ERROR 1045 (28000): Access denied for user 'unknown'@'localhost' (using password: NO)
End of 5.5 tests

View File

@ -60,7 +60,7 @@ CREATE TABLE federated.t1 (
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://user:pass@127.0.0.1:SLAVE_PORT/federated/t1';
SELECT * FROM federated.t1;
ERROR HY000: Unable to connect to foreign data source: Access denied for user 'user'@'localhost' (using password: NO)
ERROR HY000: Unable to connect to foreign data source: Access denied for user 'user'@'localhost' (using password: YES)
DROP TABLE federated.t1;
CREATE TABLE federated.t1 (
`id` int(20) NOT NULL,

View File

@ -512,4 +512,18 @@ SELECT IS_NULLABLE, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
ORDER BY COLUMN_NAME;
--echo #
--echo # Bug # 11766641: 59792: BIN/MYSQL -UUNKNOWN -PUNKNOWN
--echo # .-> USING PASSWORD: NO
--echo #
--echo # shoud contain "using password=yes"
--error 1
--exec $MYSQL -uunknown -punknown 2>&1
--echo # shoud contain "using password=no"
--error 1
--exec $MYSQL -uunknown 2>&1
--echo End of 5.5 tests

View File

@ -8232,7 +8232,7 @@ static bool find_mpvio_user(MPVIO_EXT *mpvio)
if (!mpvio->acl_user)
{
login_failed_error(mpvio, 0);
login_failed_error(mpvio, mpvio->auth_info.password_used);
DBUG_RETURN (1);
}
@ -8680,6 +8680,14 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
return packet_error;
}
/*
Set the default for the password supplied flag for non-existing users
as the default plugin (native passsword authentication) would do it
for compatibility reasons.
*/
if (passwd_len)
mpvio->auth_info.password_used= PASSWORD_USED_YES;
size_t client_plugin_len= 0;
char *client_plugin= get_string(&end, &bytes_remaining_in_packet,
&client_plugin_len);