Google App引擎和Cloud SQL连接被拒绝

时间:2018-10-24 19:09:02

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

我在Node JS应用程序中使用Google App Engine和Cloud SQL(我的SQL第二代实例),遇到了麻烦。

我使用云代理在本地连接正常,但是一旦部署,它就会失败。

我正在使用Sequelize连接到云SQL。

我确实有正确的密码/用户名/实例连接名。 我已启用API,否则我将无法通过代理进行连接。

在我的“ app.yaml”中,我确实具有正确的“ beta_settings”标记以及正确的“ cloud_sql_instances”值。

来自Cloud SQL的消息:

`{insertId:  "s=7560d77466cb46cebc3933acc1c41082;i=1a5ff5;b=30867f100f0d483ea84a5718c3948aed;m=886b8bfcbb;t=578fd8d7ad54f;x=a821eba2c35efe29-0@a1"  
 logName:  "projects/[CORRECT PROJECT]/logs/cloudsql.googleapis.com%2Fmysql.err"  
 receiveTimestamp:  "2018-10-24T18:21:25.190291090Z"  
 resource: {
  labels: {
   database_id:  "[CORRECT DB ID]"    
   project_id:  "[CORRECT PROJECT ID]"    
   region:  "us-central"    
  }
  type:  "cloudsql_database"   
 }
 severity:  "ERROR"  
 textPayload:  "2018-10-24T18:21:19.249532Z 53509 [Note] Access denied for user 'root'@'cloudsqlproxy~66.85.23.1' (using password: NO)"  
 timestamp:  "2018-10-24T18:21:19.249743Z"  }`

消息来自APP引擎(Express,Sequelize):

`Error: connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomplete]`

似乎类似的问题已被问过无数次,并且我已经阅读了10多个stackoverflow问题和答案,但我仍然没有正确的答案。

我可以寻求帮助吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我知道这很旧-但是我的NodeJS应用程序连接到CloudSQL Postgres时遇到了同样的问题。稍微挖掘一下AppEngine实例最终发现,尽管文档显示主机为127.0.0.1,但它实际上正在运行CloudSQL代理docker映像-因此,尽管实例本身为127.0.0.1,主机名实际上必须是来自应用程序容器的“ cloudsql”。

尝试连接到 cloudsql:3306 ,并查看其是否有效!