从CircleCI连接到远程MySQL

时间:2019-07-15 21:00:22

标签: mysql amazon-web-services amazon-rds circleci

我正在尝试从CircleCI构建连接到远程MySQL服务器(通过AWS RDS托管),以保存一些工件。我可以从本地连接到服务器,因此我知道凭据可以正常工作(并且我尝试在本地不使用任何AWS凭据),但是总是收到超时错误。

在我的应用程序中,我使用的是nodejs,所以使用的是mysql模块,我首先尝试:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'foo.bar.us-east-1.rds.amazonaws.com',
  user: 'my-user',
  password: '1234',
});

connection.connect((error) => {
  if (error) {
    console.log(error);
  } else {
    console.log('good');
  }
});

正如我所说,它总是有一个错误。作为测试,我还尝试使用mysql-client cli,例如:

  mysql:
    docker:
      - image: circleci/node:10-browsers
    working_directory: ~/repo
    steps:
      - checkout
      - run:
          name: Test MySQL
          command: |
            sudo apt-get update
            sudo apt-get install mysql-client
      - run: mysql -u my-user -h foo.bar.us-east-1.rds.amazonaws.com -p1234

这尝试了2分钟,但结果是:

ERROR 2003 (HY000): Can't connect to MySQL server on 'foo.bar.us-east-1.rds.amazonaws.com' (110 "Connection timed out")
Exited with code 1

有人知道相同的东西可以在本地运行没有问题,但是在CircleCI中失败了吗?

1 个答案:

答案 0 :(得分:0)

结果是,AWS创建了一个安全组,该安全组已锁定到我的个人IP地址。这就是为什么我可以在本地连接但在其他任何地方都无法连接的原因。编辑安全组以允许从任何地方进行操作,我的CircleCI任务现在可以连接到MySQL服务器。