Documentation Home
MySQL 5.5 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 27.2Mb
PDF (A4) - 27.2Mb
PDF (RPM) - 26.0Mb
HTML Download (TGZ) - 6.5Mb
HTML Download (Zip) - 6.5Mb
HTML Download (RPM) - 5.6Mb
Man Pages (TGZ) - 152.9Kb
Man Pages (Zip) - 255.0Kb
Info (Gzip) - 2.6Mb
Info (Zip) - 2.6Mb
Excerpts from this Manual

B.5.2.4 Client does not support authentication protocol

The current implementation of the authentication protocol uses a password hashing algorithm that is incompatible with that used by older (pre-4.1) clients. Attempts to connect to a 4.1 or higher server with an older client may fail with the following message:

shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client

To deal with this problem, the preferred solution is to upgrade all client programs to use a 4.1.1 or higher client library. If that is not possible, use one of the following approaches:

  • To connect to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.

  • Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function:

        -> 'some_user'@'some_host' = OLD_PASSWORD('new_password');

    Substitute the password you want to use for new_password in the preceding example. MySQL cannot tell you what the original password was, so you'll need to pick a new one.

  • Tell the server to use the older password hashing algorithm by default:

    1. Start mysqld with the old_passwords system variable set to 1.

    2. Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query:

      mysql> SELECT Host, User, Password FROM mysql.user
          -> WHERE LENGTH(Password) > 16;

      For each account record displayed by the query, use the Host and User values and assign a password using one of the methods described previously.

The Client does not support authentication protocol error also can occur if multiple versions of MySQL are installed but client programs are dynamically linked and link to an older library. Make sure that clients use the most recent library version with which they are compatible. The procedure to do this will depend on your system.


The PHP mysql extension does not support the authentication protocol in MySQL 4.1.1 and higher. This is true regardless of the PHP version being used. If you wish to use the mysql extension with MySQL 4.1 or higher, you may need to follow one of the options discussed above for configuring MySQL to work with old clients. The mysqli extension (stands for "MySQL, Improved"; added in PHP 5) is compatible with the improved password hashing employed in MySQL 4.1 and higher, and no special configuration of MySQL need be done to use this MySQL client library. For more information about the mysqli extension, see

For additional background on password hashing and authentication, see Section, “Password Hashing in MySQL”.

User Comments
  Posted by Kristiono Setyadi on May 14, 2008
If you are using PHPMyAdmin, just go the the "Privileges" tab.
Edit the user containing username and host you want to use with. In the "Change Password" box below, you can choose whether using password or no. The solution is in there: Choose "MySQL 4.0 Compatible" and "Go".

I have solved my problem using this simple way.
  Posted by Max Power on August 17, 2010
I had a 4.1 server which was still configured to generate only old passwords (16 digit) and a newer client which did not support old passwords. I could modify neither the server nor the client configuration.

On the client side, I used the following command to generate a 41-digit password:
SELECT PASSWORD('blablabla');

Then on the server side, I set the password to this 41-digit string:
SET PASSWORD FOR 'bob'@'somehost' = '*73C98624E32963F3D4828B9398FD3F67B8D58E40'

The client then connected flawlessly to the server.
  Posted by Glenn Bullock on November 23, 2010
I'm on Snow Leopard, Intel MacBook Pro, and finally had to install the mysql gem by hand (I was getting the "uninitialized constant MysqlCompat::MysqlRes" error).

The mysql download for Snow Leopard had the client libraries on board, I just had to give the ruby extconf.rb script the needed paths (ruby extconf.rb --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include), and make sure permissions on those files and directories were right.

I used the mysql-ruby-2.8.2.tar.gz version.

Once I make install-ed it, things worked. Thanks for all the help.
  Posted by Toni Cordon Batlle on June 28, 2011
This can occurr if you set an incorrect "Plugin" on "User" table in "mysql" database.

Connecting from PHP using Authentication parameters, from a user with incorrect "Plugin", makes PHP can't connect, and shown the error message "Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client"

Best regards
  Posted by Charles Peterson on June 4, 2013
--secure-auth is default on after 5.6.?

you may need to disable this also if using an old mysql client.
  Posted by Roger Pack on September 5, 2017
In some distros, if you don't specify a password for the "root" mysql user, at install time, then it sets up the root user with a "special" authentication mode called "plugin auth_socket" (i.e. 'is it root that is logged in?') and the client might not support that (so, not that it's old, just that it doesn't handle that style of authentication). So if you're using root, that may be your problem. You can either update your client to handle this "different" type of authentication, or change the authentication plugin of root, or create a user+password and use that instead of root, or specify a root password when installing. See
Sign Up Login You must be logged in to post a comment.