排查 Windows 上的 Node.js 和 MySQL 连接错误
P粉794177659
P粉794177659 2024-02-21 16:47:21
0
1
289

首先,我在 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学习者快速成长!