mysql - 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]: }
解决方案
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 一切都正确。我希望这些东西可以帮助您解决问题。谢谢 :)
推荐阅读
- javascript - forloop 麻烦,未定义的问题
- if-statement - If/Then 语句写入,用于从另一个单元格中提取空白单元格
- python - 使用跨度对象。[斯帕西,蟒蛇]
- powershell - 在 .BAT 程序中获取 Powershell 返回代码
- javascript - 如何禁用 vuejs 路由器链接?
- kubernetes - 有条件的舵钩
- c# - 选择语句:无效的列名,在 C# 中使用 Dapper
- php - 从数组 .. 中查找字符串中的所有匹配项并返回匹配项
- android - 当我在数据库中保存为时间戳的日期临近时,Firestore 是否可以向我的应用发送通知?
- matlab - 缺少 Matlab 共享库导致的错误