排查 Windows 上的 Node.js 和 MySQL 連線錯誤
P粉794177659
P粉794177659 2024-02-21 16:47:21
0
1
294

首先,我在 Window 中工作。

我準確地提供了必要的資訊(主機、使用者、密碼、連接埠、資料庫),但它給了錯誤。

code: 'ER_ACCESS_DENIED_ERROR',
    errno: 1045,
    sqlMessage: "Access denied for user 'root'@'localhost' (using password: YES)",
    sqlState: '28000',
    fatal: true

我嘗試了很多方法來解決這個問題,但都失敗了。不知道為什麼要重新安裝MySQL就暫時解決了。但是當我重新啟動電腦時,又出現錯誤。 我立即編寫程式碼、使用版本並進行嘗試。

我的程式碼

const express = require('express');
    const app = express();
    const mysql = require('mysql');
    const port = process.env.PORT || 4000;

    const connection = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "123456",
    port: "3306",
    database: "study01"
    });
    console.log(connection);
    connection.connect();
    
    app.listen(app.get('port'), () => console.log(`Listening on port ${port}`));

MySQL 伺服器和模組版本

mysql server : 5.7.38
nodejs : 16.15.1
nodejs mysql : 2.18.1
nodejs express : 4.18.1

我嘗試過這些事情

  • 更改密碼,建立另一個使用者
  • ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY '123456';
  • 重新安裝 Node.js 和 npm
  • 重新安裝MySQL

P粉794177659
P粉794177659

全部回覆(1)
P粉270891688

問題是您的帳戶沒有連接到資料庫的權限。

您的命令是授予權限,但是,您需要帳戶的密碼雜湊。

取得您帳戶執行的密碼雜湊

USE mysql;
SELECT Password FROM user WHERE User = 'your Username';

然後將該輸出通過管道傳輸到此命令的密碼雜湊部分

GRANT ALL PRIVILEGES ON *.* TO `your Username`@`%` IDENTIFIED BY PASSWORD 'your password hash' WITH GRANT OPTION

% 字元是通配符,因此它允許您從任何 IP 位址連接到資料庫。為了提高安全性,您可以將其限制為僅您的 IP 位址

希望這有幫助。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!