mysql - 从 CircleCI 连接到远程 MySQL
问题描述
我正在尝试从 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 中失败的原因?
解决方案
事实证明,AWS 创建了一个安全组,该组被锁定到我的个人 IP 地址。这就是为什么我可以在本地连接但在其他任何地方我无法连接的原因。编辑安全组以允许从任何地方,我的 CircleCI 任务现在可以连接到 MySQL 服务器。
推荐阅读
- c - C: 指向数组的指针!= 指向 &array[0] 的指针?
- google-cloud-firestore - 了解 Firebase Firestore 规则
- r - 如何在 R 中的直方图上垂直居中数字?
- php - 错误字符串(161)“无法发布 /api/2/trading/balance”HitBTC Api PHP
- python-3.x - 是否可以通过键从命名元组的元组中获取元素?
- dataframe - 如何在pyspark数据框中选择或删除指定行
- android - 方向屏幕上的 Android webview
- angular - 不能包含材料和cpk文件夹
- angular - POST x-www urlencoded 从云函数(Firebase)
- flutter - 我如何访问另一个集团的数据