我有一个运行mysql的aurora无服务器db集群。我正在尝试编写一个应用程序,从脚本中提取一个字符串并将其放入数据库。
我已经能够使用putty中的ec2(ec2上的一个节点程序)和mysql workbench成功地连接到集群,但是我还不能使用自己的代码。我正在尝试使用节点模块ssh2和mysql2。
var mysql = require('mysql2');
var Client = require('ssh2').Client;
var ssh = new Client();
ssh.on('ready', function() {
ssh.forwardOut(
'127.0.0.1',
12345,
'127.0.0.1',
3306,
function (err, stream) {
if (err) throw err;
var sql = mysql.createConnection({
host: 'my db endpoint',
user: 'root',
password: 'pass',
database: 'testdb',
stream: stream
//sql stuff
});
}).connect({
host: 'ec2-publicdns',
port: '22',
username: 'ec2-user',
privateKey: require('fs').readFileSync('pkeyssh') //pem key converted to openssh using PuTTYgen
});
当我运行这个时,我得到: Error: (SSH) Channel open failure: Connection refused
另外,aurora serverless对我来说是正确的解决方案吗?似乎没有一种方法不经过ec2就可以和它真正交谈。我应该找一个不同的数据库主机吗?
1条答案
按热度按时间kupeojn61#
当您创建一个aurora无服务器数据库时,您需要配置一个vpc安全组,该组指定有关可以从何处打开连接的规则(cidr块和端口)。然后,您可以按名称将此安全组的访问权限授予其他人,或者只需从同一安全组中启动应用程序服务器,即可为其提供访问权限。即使在测试上下文中,也不应该要求ssh端口转发来连接到db。
这里有一个不错的教程:https://aws.amazon.com/getting-started/tutorials/configure-connect-serverless-mysql-database-aurora,有关数据库安全组的详细信息,请参阅https://docs.aws.amazon.com/amazonrds/latest/userguide/overview.rdssecuritygroups.html.