使用 node-mysql 从 heroku 节点应用程序连接到 Amazon RDS 数据库
Posted
技术标签:
【中文标题】使用 node-mysql 从 heroku 节点应用程序连接到 Amazon RDS 数据库【英文标题】:Connecting to Amazon RDS database from heroku node app using node-mysql 【发布时间】:2016-03-16 20:00:34 【问题描述】:我有
app.connectionPool = mysql.createPool(
host : * * *, //(a.k.a ....rds.amazonaws.com)
user : * * *,
password : * * *,
database : * * *,
ssl: 'Amazon RDS'
);
用于初始化数据库池,它在本地运行良好(我的 IP 在 RDS 设置中被列入白名单),但从 heroku 运行时会出现 [Error connect ETIMEOUT]
错误。
我也试过了:
app.connectionPool = mysql.createPool(
host : * * *, // (....rds.amazonaws.com)
user : * * *,
password : * * *,
database : * * *,
ssl :
ca : fs.readFileSync(__dirname + '/config/amazon-rds-ca-cert.pem')
);
关注 node-mysql 和 heroku 文档,但也没有用。
PS:我已经按照heroku 文档中的建议设置了GRANT USAGE ON *.* TO 'my_username'@'%' REQUIRE SSL;
。
【问题讨论】:
【参考方案1】:我不知道您是否仍在为此苦苦挣扎(两年后),但您可能需要配置您的 RDS 实例以接受来自 Heroku 正在运行您的实例的任何 IP 地址的传入请求。或者(如果这只是一个您并不真正关心的爱好)打开所有 IP 地址。如果项目很严肃或有重要数据,请不要这样做。
您可以通过在 aws 控制台中打开 rds 实例并查看“安全组”来更改 IP 限制。您可能会看到允许 IP 地址访问实例的规则——这就是您应该更改的内容。
希望这行得通。
【讨论】:
永远不要打开所有端口 Heroku 的 IP 地址不会保持不变,即使是每周。以上是关于使用 node-mysql 从 heroku 节点应用程序连接到 Amazon RDS 数据库的主要内容,如果未能解决你的问题,请参考以下文章
ER_CON_COUNT_ERROR:node-mysql 中的连接错误太多
如何将访问代码从 gmail api 传递给 Heroku 中的节点工作者
MySQL 查询在 phpMyAdmin 中返回的 node-mysql 中缺少结果