搜尋

首頁  >  問答  >  主體

排查 Windows 上的 Node.js 和 MySQL 連線錯誤

首先,我在 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

我嘗試過這些事情

P粉794177659P粉794177659337 天前375

全部回覆(1)我來回復

  • P粉270891688

    P粉2708916882024-02-22 16:06:05

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

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

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

    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 位址

    希望這有幫助。

    回覆
    0
  • 取消回覆