Reputation:
In MySQL 8.0.4 there is a new client <-> server authentificaion protocol. When I try to connect from my client to the MySQL server, the MySQL server responses:
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Until now, I connect to the MySQL directly from my application - without the libMySQL.dll. So I communicate without a library directly via TCP/IP. Now I have to implement the new authentification. Where do I get information about the new client server protocol?
Inside the MySQL Internals Manual I don't find information about it. Is this not update to date?
Other MySQL client applications are having the same problem. So it's not a problem of my developing language - it's a problem of the client <-> server protocol of the MySQL server. (I'm using Delphi and my client library has more than 3000 lines of code.)
I'm looking for a solution working with each MySQL server - not only for my one. So changing the password storing is not a solution for me.
Upvotes: 1
Views: 419
Reputation: 462
For MySQL 8 the default authentication is now SHA-2 which you can read about here: https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html
You should probably use it however if you don't wish to you can change the default to the legacy mode for any given user with something like this:
ALTER USER myUser IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
That will force the old method if you're looking for a quick fix.
You don't (I suspect) want to start altering the source code for your client because then you have a branched version of it which is going to make deployment and updating on your servers a nightmare. You're better off simply waiting until such time as a new version of your client software is available that supports the new method.
MySQL source is here: https://github.com/mysql
Upvotes: 2