首页 > 解决方案 > Heroku 上 NodeJS 的 MySQL 连接错误(在 Dev 中工作)

问题描述

我的应用程序在 localhost 中正常工作,具有以下连接详细信息:

const mysql = require("mysql");

var mysqlConnection = mysql.createConnection({
host: "gatorxxxx.hostgator.com",
user: "ermaulik_chdb",
password: "<password>",
database: "ermaulik_chdb",
port: <port>
})

mysqlConnection.connect((err) => {
if(!err) {
console.log("Connection")
} else {
console.log(err)
}
});

但是,当我在 Heroku 上托管此应用程序并引发以下异常时,它不起作用。

只是为了提供更多上下文,我的数据库托管在 hostgator 的 cpanel 中。

2020-05-23T16:47:32.542824+00:00 app[web.1]: server is running on port: 54806
2020-05-23T16:47:32.812651+00:00 app[web.1]: Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'ermaulik_chdb'@'ec2-3-84-45-11.compute-1.amazonaws.com' (using password: YES)
2020-05-23T16:47:32.812658+00:00 app[web.1]:     at Handshake.Sequence._packetToError (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
2020-05-23T16:47:32.812659+00:00 app[web.1]:     at Handshake.ErrorPacket (/app/node_modules/mysql/lib/protocol/sequences/Handshake.js:123:18)
2020-05-23T16:47:32.812659+00:00 app[web.1]:     at Protocol._parsePacket (/app/node_modules/mysql/lib/protocol/Protocol.js:291:23)
2020-05-23T16:47:32.812660+00:00 app[web.1]:     at Parser._parsePacket (/app/node_modules/mysql/lib/protocol/Parser.js:433:10)
2020-05-23T16:47:32.812661+00:00 app[web.1]:     at Parser.write (/app/node_modules/mysql/lib/protocol/Parser.js:43:10)
2020-05-23T16:47:32.812661+00:00 app[web.1]:     at Protocol.write (/app/node_modules/mysql/lib/protocol/Protocol.js:38:16)
2020-05-23T16:47:32.812662+00:00 app[web.1]:     at Socket.<anonymous> (/app/node_modules/mysql/lib/Connection.js:88:28)
2020-05-23T16:47:32.812662+00:00 app[web.1]:     at Socket.<anonymous> (/app/node_modules/mysql/lib/Connection.js:526:10)
2020-05-23T16:47:32.812662+00:00 app[web.1]:     at Socket.emit (events.js:310:20)
2020-05-23T16:47:32.812663+00:00 app[web.1]:     at addChunk (_stream_readable.js:286:12)
2020-05-23T16:47:32.812663+00:00 app[web.1]:     --------------------
2020-05-23T16:47:32.812664+00:00 app[web.1]:     at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
2020-05-23T16:47:32.812664+00:00 app[web.1]:     at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
2020-05-23T16:47:32.812665+00:00 app[web.1]:     at Connection.connect (/app/node_modules/mysql/lib/Connection.js:116:18)
2020-05-23T16:47:32.812665+00:00 app[web.1]:     at Object.<anonymous> (/app/connection.js:11:17)
2020-05-23T16:47:32.812666+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:1133:30)
2020-05-23T16:47:32.812666+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
2020-05-23T16:47:32.812666+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:977:32)
2020-05-23T16:47:32.812667+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:877:14)
2020-05-23T16:47:32.812667+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:1019:19)
2020-05-23T16:47:32.812667+00:00 app[web.1]:     at require (internal/modules/cjs/helpers.js:77:18) {
2020-05-23T16:47:32.812668+00:00 app[web.1]:   code: 'ER_ACCESS_DENIED_ERROR',
2020-05-23T16:47:32.812668+00:00 app[web.1]:   errno: 1045,
2020-05-23T16:47:32.812669+00:00 app[web.1]:   sqlMessage: "Access denied for user 'ermaulik_chdb'@'ec2-3-84-45-11.compute-1.amazonaws.com' (using password: YES)",
2020-05-23T16:47:32.812669+00:00 app[web.1]:   sqlState: '28000',
2020-05-23T16:47:32.812669+00:00 app[web.1]:   fatal: true
2020-05-23T16:47:32.812670+00:00 app[web.1]: }

标签: mysqlnode.jsheroku

解决方案


Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'ermaulik_chdb'@'ec2-3-84-45-11.compute-1.amazonaws.com'

你有一个错误。因为您的 MySQL 数据库连接未建立。首先,请检查已安装的 LAMP、Nodejs Acc。到您支持的代码版本。在 Heroku 服务器中。适当地。

在第二步中,检查 MYSQL DB GRANT PRIVILEGES。

 SHOW GRANTS FOR 'root'@'localhost';

第三个是确保您的 Nodejs 代码和 MySql DB 在同一台服务器上。如果不是,您需要允许服务器连接 OutSide 服务器。

并确保主机、用户名、密码、HOST 一切都正确。我希望这些东西可以帮助您解决问题。谢谢 :)


推荐阅读