「ER_NOT_SUPPORTED_AUTH_DE以下原因無法與MySQL伺服器建立連線不支援的身份驗證協定。當 MySQL 伺服器需要用戶端不支援的特定身份驗證方法時,就會出現此問題。
在您的情況下,您已從 MariaDB 升級到 MySQL。但是,您使用的 JavaScript 連線片段可能仍在使用 MariaDB 驗證協議,MySQL 8.0 及以上版本不支援該協定。
解決方案:
解決此問題,您需要升級 Node.js 用戶端以支援 MySQL 原生驗證協定。該協定兼容 MariaDB 和 MySQL 伺服器。
對於 MySQL 8.0 以上版本,使用以下指令更新 root 使用者的驗證方法:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
將「root」替換為使用者名稱和「密碼」以及所需的密碼。
更新驗證方法後,執行以下命令以啟動變更:
FLUSH PRIVILEGES;
現在,修改您的JavaScript 連線片段以使用MySQL 本機協定:
var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'foobarDb', authPlugin: 'mysql_native_password' // specify the MySQL native authentication protocol });
這應該解決“ER_NOT_SUPPORTED_AUTH_MODE”錯誤並允許您連接到MySQL來自Node.js 伺服器的資料庫。
以上是為什麼從 Node.js 連線到 MySQL 時會出現「ER_NOT_SUPPORTED_AUTH_MODE」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!