Heim > Fragen und Antworten > Hauptteil
Zuerst arbeite ich in Windows.
Ich habe die notwendigen Informationen korrekt angegeben (Host, Benutzer, Passwort, Port, Datenbank), aber es ist ein Fehler aufgetreten.
code: 'ER_ACCESS_DENIED_ERROR', errno: 1045, sqlMessage: "Access denied for user 'root'@'localhost' (using password: YES)", sqlState: '28000', fatal: true
Ich habe viele Möglichkeiten ausprobiert, dieses Problem zu lösen, aber alle sind fehlgeschlagen. Ich weiß nicht, warum eine Neuinstallation von MySQL das Problem vorübergehend gelöst hat. Aber als ich meinen Computer neu startete, trat der Fehler erneut auf. Ich habe es sofort programmiert, mit der Version gespielt und es ausprobiert.
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 地址
希望这有帮助。