gpt4 book ai didi

EC2 上的 node.js 无法连接到 RDS

转载 作者:行者123 更新时间:2023-12-04 18:52:43 24 4
gpt4 key购买 nike

我有一个在 EC2 实例(运行 Ubuntu)上运行的 node.js 应用程序,试图连接到 RDS 上的 MySQL。 RDS 实例的安全组包含 EC2 实例的安全组作为授权条目。两个实例都在同一个区域 us-east-1c 中。

当我尝试使用 mysql -u xxxxx -h xxxxx.xxxxxx.us-east-1.rds.amazonaws.com -p 使用 MySQL CLI 连接到 RDS 时我连接没有任何问题。

但是,当我尝试使用我编写的 RDS 连接测试实用程序进行连接时,我得到一个 Error: connect ECONNREFUSED .测试实用程序代码是:

var mysql = require('mysql');

mysqlConfiguration = 'production';
var mysqlConfigs = {
'production':{
host:'xxxxx.xxxxx.us-east-1.rds.amazonaws.com',
password:'xxxxx',
user:'xxxxx',
database:'xxxxx'
},
}

var connectionPool = mysql.createPool({
host: mysqlConfigs[mysqlConfiguration]['host'],
user: mysqlConfigs[mysqlConfiguration]['user'],
password: mysqlConfigs[mysqlConfiguration]['password'],
database: mysqlConfigs[mysqlConfiguration]['database'],
multipleStatements: true,
connectionLimit: 50,
});

connectionPool.getConnection(function(err,db){
console.log(err);
console.log(db);
if(db) db.release();
});

我收到的错误表明连接被拒绝。当我在我的开发机器(与 RDS 实例一起列入白名单)上运行此代码时,它正常连接到 RDS。
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
fatal: true }

我如何从命令行使用 mysql 进行连接,但我不能从 node.js 应用程序连接,这很奇怪。

我在 EC2 文档中查看了 EC2 iptables 出站默认值,它说允许所有出站流量。

任何想法为什么会发生这种情况?

最佳答案

在 mysql 中,用户的授权由“用户”字符串加上“主机名”字符串确定。所以授权/用户字符串可能看起来像这样:'xxxxx'@'xxxxx.xxxxx.us-east-1.rds.amazonaws.com'
您的 Node 应用程序可能完全使用“不同”用户字符串进行连接。

您可以从 mysql 命令行尝试以下操作:

mysql> CREATE USER 'xxxxxx'@'%' IDENTIFIED BY 'your_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'xxxxxx'@'%'
-> WITH GRANT OPTION;

这样,您将拥有一个帐户,无论用户的主机部分是什么,您都可以访问数据库服务器。

这可能是一个更简单的问题,您的用户根本无法访问数据库。你可以试试:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'xxxxxx'@'xxxxx.xxxxx.us-east-1.rds.amazonaws.com'
-> WITH GRANT OPTION;

或者它可以更简单。数据库是否存在?
mysql> SHOW DATABASES;

如果它不存在,您可以尝试:
mysql> CREATE DATABASE <your-database-name>;

关于EC2 上的 node.js 无法连接到 RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com