首页 > 解决方案 > 通过 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,有同样的问题。有任何想法吗?

标签: mysqlnode.jsamazon-web-services

解决方案


默认情况下,对 AWS RDS 实例的网络访问是关闭的。

我强烈建议:

  1. 测试你的 Nodejs 实例是否能够连接到 mysql 实例。你可以这样做:( sudo apt-get install mysql-client对于 Ubuntu)

  2. 检查RDS实例的安全组配置。遵循 AWS 教程

  3. 遵循AWS RDS 安全最佳实践 并适当地配置安全组。


推荐阅读