mysql - 使用 Cloud SQL 在 Google App Engine 上扬 sails 起航

标签 mysql node.js google-app-engine sails.js google-cloud-sql

我已遵循本指南 https://cloud.google.com/community/tutorials/run-sailsjs-on-google-app-engine 关于如何将 Sails 部署到 Google App Engine。 然而,我的应用程序使用 MySQL 作为数据库,我在“connection.js”中这样设置了它。

mysql: {
      adapter: 'sails-mysql',
      host: '104.199.196.99', // Internal IP Address of the Cloud SQL Instance
      user: 'root', 
      password: 'xxxxxx', 
      database: 'xxxxxxxx' 
    }

我在尝试连接 Cloud SQL 时遇到的错误(当我发出涉及数据库连接的登录请求时)是:

Sending 500 ("Server Error") response:
Error (E_UNKNOWN) :: Encountered an unexpected error
Could not connect to MySQL:
Error: connect ETIMEDOUT 

我设置正确了吗?

最佳答案

对于那些寻求使用带有 Sails.js 的 Google App Engine 连接到 Google Cloud SQL 的解决方案的人,我已经找到了。

使用主机地址连接到 Google Cloud SQL 在这里不起作用,因为 Cloud SQL 的防火墙规则和访问控制将阻止这种连接到白名单地址。不幸的是,无法为 Google App Engine 分配静态 IP 地址。因此,Cloud SQL 无法将 App Engine 列入白名单,或者您需要将 0.0.0.0/0 列入白名单,这是不安全的。

解决方案是在您的 connection.js 中使用此配置。

googleCloudSQL: {
   adapter: 'sails-mysql',
   socketPath: '/cloudsql/' + process.env.INSTANCE_CONNECTION_NAME,
   user: 'XXXXX',
   password: 'XXXXXXX',
   database: 'XXXXXXXX'
}

通过套接字路径使用 Cloud SQL 的实例连接名称连接到 Cloud SQL,这是执行此操作的 native 方法。如果您的 App Engine 已经与您的 Cloud SQL 在同一个项目中,那么它已经获得连接授权。但是,如果它们在不同的项目中,您将需要设置服务帐户和 IAM。

关于mysql - 使用 Cloud SQL 在 Google App Engine 上扬 sails 起航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44527425/

相关文章:

javascript - 使用 Nodejs Web 服务器但没有框架对用户进行身份验证

java - Android 与 JSON 的致命连接

php - mysqli 将结果作为关联数组获取

javascript - 在共享外部模块中强制使用单例模式

node.js - NodeJS - 解析 CSV 文件

python - 在 GAE 本地开发服务器中使用 GCS

google-app-engine - 带服务的 App Engine 自定义域

mysql - 什么是 MySQL "Key Efficiency"

node.js - MongoDB 获取越来越多的记录

java - cron 任务运行时“锁定”数据存储访问