搜索

首页  >  问答  >  正文

排查 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粉794177659280 天前347

全部回复(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
  • 取消回复