Preface The mysql module (project address is https://github.com/mysqljs/mysql) is an open source MySQL driver written in JavaScript that can operate MySQL in Node.js applications. However, during use, the "ER_NOT_SUPPORTED_AUTH_MODE" problem occurred. This article describes the cause and solution of this problem. Error message When I try to connect to MySQL 8 using the mysql module, I get the following error message: D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\index.js:17 throw error; ^ Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:91:28) at Socket.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:525:10) at Socket.emit (events.js:196:13) at addChunk (_stream_readable.js:290:12) -------------------- at Protocol._enqueue (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:51:23) at Connection.connect (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:119:18) at Object.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\index.js:12:12) at Module._compile (internal/modules/cjs/loader.js:759:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10) at Module.load (internal/modules/cjs/loader.js:628:32) at Function.Module._load (internal/modules/cjs/loader.js:555:12) at Function.Module.runMain (internal/modules/cjs/loader.js:826:10) at internal/main/run_main_module.js:17:11 Cause of error The reason for this error is that currently, the latest MySQL module does not fully support the "caching_sha2_password" encryption method of MySQL 8, and "caching_sha2_password" is the default encryption method in MySQL 8. Therefore, the following command uses the "caching_sha2_password" encryption method by default, and the account and password cannot be used in the mysql module. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.12 sec) Workaround The solution is to modify the password of user root and specify the encryption method that the mysql module can support: mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.12 sec) The above statement shows that the encryption method using "mysql_native_password" is specified. This method is supported by the mysql module. Run the application again and you can see the following console output: $ node index.js The result is: RowDataPacket { user_id: 1, username: '老卫' } Among them, "RowDataPacket { user_id: 1, username: '老卫' }" is the result of the database query. Source code The examples in this section can be found in the "mysql-demo" application at https://github.com/waylau/nodejs-book-samples. The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: WeChat applet implements a simple handwritten signature component
>>: Detailed explanation of browser negotiation cache process based on nginx
TeamCenter12 enters the account password and clic...
This article shares the specific code of JavaScri...
Special symbols Named Entities Decimal encoding S...
1) Process 2) FSImage and Edits Nodenode is the b...
Table of contents Preface 1. Local port forwardin...
React is an open-source JavaScript library used b...
Multi-way search tree Height of a complete binary...
At the beginning, I felt sad. The screenshots are...
IP masquerading and port forwarding Firewalld sup...
The docker repository itself is very slow, but th...
Table of contents Purpose of the table For exampl...
Preface This article records a common SMS verific...
A process is a program code that runs in the CPU ...
pssh is an open source software implemented in Py...
Zabbix 2019/10/12 Chenxin refer to https://www.za...