Amazon Web Services 和 mysql c++ 连接器无法从 EC2 instace 连接到 RDS 实

Amazon web services and mysql c++ connector cannot connect to RDS instance from EC2 instace

本文关键字:instace EC2 连接 RDS Services Web mysql 连接器 c++ Amazon      更新时间:2023-10-16

我正在用 c++ 编写一个服务器应用程序,该应用程序将从 EC2 实例连接到 RDS 实例并执行普通数据库工作。我已经在软件上工作了几个星期,今天我达到了需要连接到数据库并与一些数据交互的步骤。每次我收到一个异常说Unknown MySQL server host(代码 2005),我似乎无法让它连接,但奇怪的是我可以使用相同的 url 和机器在 ssh 中使用 mysql 命令,它工作得很好。我的代码如下:

    dbDriverPtr driver(get_driver_instance());
    LOG(trace) << "Starting " << driver->getName();
    dbConnectionPtr conn(driver->connect(sql::SQLString("tcp://mydb.abcdef.us-west-2.rds.amazonaws.com:3306"), sql::SQLString("user"), sql::SQLString("password")));
    LOG(trace) << "SQL connected to Auth Server";
    conn->setSchema("Auth");
    dbStatementPtr stmt(conn->createStatement());
    dbResultPtr res(stmt->executeQuery("select id,displayname from users order by id desc"));
    while (res->next())
    {
        LOG(trace) << res->getString("id") << ":" << res->getString("displayname");
    }

请注意,指针类型只是auto_ptr类型定义。

我已经尝试了 tcp、端口和将 url 解析为 ip(这真的不起作用)的变体,唯一的一致性是失败。我在这里错过了什么?

应该注意,我使用的是默认的 ubuntu 14.4 64 位服务器实例。

更新任何人

。事实证明,这与 aws 无关,而是我的构建配置。我静态链接了提升库并动态链接了其他库。不知何故,这搞砸了我的dns东西,所以getaddrinfo失败了。