首先,我在 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 地址
希望这有帮助。