首先,我在 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 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';
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 位址
希望這有幫助。