繁体   English   中英

通过node.js连接AWS mysql时始终显示错误

[英]Always show error when connecting aws mysql via node.js

我尝试通过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 ,但存在相同的问题。 有任何想法吗?

通过任何mysql客户端(mysql workbench,dbninja等)连接mysql aws rds进行检查,如果您能够通过任何客户端进行连接,则nodejs设置一定有问题,否则RDS详细信息会出现问题。

还要检查RDS是否对特定VPN限制了访问,因此您的节点服务器应该在同一VPN中才能连接。

默认情况下,对AWS RDS实例的网络访问处于关闭状态。

我强烈建议:

  1. 测试您的带有Nodejs的实例是否能够连接到mysql实例。 您可以执行以下操作: sudo apt-get install mysql-client (对于Ubuntu)

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

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

检查以下内容:

1-RDS安全组,并确保您的IP地址可以访问您的RDS, https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

2-检查您的密码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM