mysql - 通过 node.js 连接 aws mysql 时总是显示错误
问题描述
我尝试通过 nodejs 连接 aws mysql
var mysql = require('mysql')
var connection = mysql.createConnection({
host : 'xxxx.xxxc.ap-northeast-1.rds.amazonaws.com',
port : '3306',
user : 'dbusername',
password : 'passwords',
database : 'dbname'
})
connection.connect(function(err){
if(!err) {
console.log("connected ... ")
} else {
console.log(err)
}
});
当我运行此代码时,它需要几秒钟,然后显示以下错误 -
{ Error: connect ETIMEDOUT
at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:181:13)
at ontimeout (timers.js:466:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:267:5)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true }
我google了很多,找不到正确的答案,我尝试使用node-mysql2
,有同样的问题。有任何想法吗?
解决方案
默认情况下,对 AWS RDS 实例的网络访问是关闭的。
我强烈建议:
测试你的 Nodejs 实例是否能够连接到 mysql 实例。你可以这样做:(
sudo apt-get install mysql-client
对于 Ubuntu)检查RDS实例的安全组配置。遵循 AWS 教程。
遵循AWS RDS 安全最佳实践 并适当地配置安全组。
推荐阅读
- plsql - 使用立即执行查询以计算表行数
- java - Apache httpclient 未知主机问题
- node.js - 如何在 Ionic 4 中发送带有标头的身份验证令牌?
- android - Android为表格和单元格创建具有不同边框颜色的表格
- java - 如何在自定义视图中访问当前视图?
- java - 套件运行后生成范围报告时获取会话 ID 为空
- angular8 - 升级到 Nebular 4 已停止显示字体真棒图标。设置包也不起作用
- haskell - `>>=` 的目的更多是关于:根据参数处理不同的情况,还是解包参数?
- python - 如何在同一列中减去字段 - Python
- node.js - 如何让傀儡师无法被发现?