我正在尝试从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中失败了吗?
答案 0 :(得分:0)
结果是,AWS创建了一个安全组,该安全组已锁定到我的个人IP地址。这就是为什么我可以在本地连接但在其他任何地方都无法连接的原因。编辑安全组以允许从任何地方进行操作,我的CircleCI任务现在可以连接到MySQL服务器。