Oops! MySQL just showed the error ‘The server requested authentication method unknown to the client‘.
Usually, the error shows up when a user tries to connect to the database.
The reason for this error is improper authentication plugin settings in MySQL.
At Bobcares, we often get requests to fix MySQL errors, as a part of our Server Management Services.
Today, let’s see how our Support Engineers fix this error.
How does the MySQL server authenticate a client?
A PHP application connects to the MySQL server using the username provided by the server/hosting provider.
The server validates the user and returns the connection status. MySQL uses caching_sha2_password and auth_socket plugins for validation.
The caching_sha2_password plugin uses an SHA-2 algorithm with 256-bit password encryption. MySQL 8 prefers this auth method.
Whereas the auth_socket plugin checks if the socket username matches with the MySQL username. If the names don’t match, it checks for the socket username of the mysql.user. If a match is found, the plugin permits the connection.
But to serve the pre 8.0 clients and avoid compatibility errors, it is preferred to revert back the auth method. Older versions of MySQL use mysql_native_password plugin for validation.
Why does MySQL show the authentication method unknown to the client?
Recently one of our customers approached us with a MySQL auth error. The error showed up in MySQL 8. But the user had a PHP version 7.0. The default authentication plugin used by the MySQL is auth_socket.
Here MySQL client like PHPMyAdmin authenticates the user to login to the database by a password. Hence when a user tries to access the database using PHPMyAdmin ends up in the auth error. But the actual reason was compatibility error.
The error message is ‘The server requested authentication method unknown to the client‘. In PHPMyAdmin, the error appears as,
Now let’s see how our Support Engineers fix this error.
How we fix the error authentication method unknown to the client?
To fix this error we changed the default authentication plugin used by MySQL. For this, we logged in to MySQL as the root user. Then we run the command,
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Here we replaced the ‘password‘ with the password of the root user. If the database user is not root user, replace the username and password respectively.
Finally, this fixed the error. And the user was able to log in to PHPMyAdmin successfully.
But this is a temporary fix as the MySQL 8 uses PHP 7.0. The preferred auth plugin for this version is caching_sha2_password.
Hence we also recommend the users to upgrade the pre 8.0 clients to avoid further errors.
[Still, having trouble in fixing MySQL errors? – We can help you.]
In short, MySQL error the server requested authentication method unknown to the client occurs due to the default authentication plugin used. Today, we saw how our Support Engineers changes this to fix the error.