When connecting a Node.js server to a MySQL database, you may encounter the error "ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server." This issue arises when the client and server are using different authentication methods.
Issue Analysis
The error message suggests that the MySQL server is configured to use a newer authentication protocol that is not supported by the Node.js client. This can occur if the Node.js client version is outdated.
Solution
To resolve this issue, upgrade the Node.js client to support the newer authentication protocol used by the MySQL server. For MySQL v8.0, follow these steps:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES;
Remember to replace 'root' and 'password' with the actual username and desired password. These changes need to be applied to the user that is trying to connect.
Code Snippet (Updated)
After updating the MySQL configuration and user privileges, the Node.js connection snippet should be updated to use the mysql2 library, which supports the newer authentication protocol:
const mysql = require('mysql2'); const connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'password', database : 'foobarDb' });
By implementing these steps, you can successfully establish a connection between your Node.js server and MySQL database, eliminating the "ER_NOT_SUPPORTED_AUTH_MODE" error.
The above is the detailed content of How to Fix the 'ER_NOT_SUPPORTED_AUTH_MODE' Error When Connecting Node.js to MySQL?. For more information, please follow other related articles on the PHP Chinese website!