首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用React应用程序的Google Cloud SQL中出现MYSQL连接错误

问使用React应用程序的Google Cloud SQL中出现MYSQL连接错误
EN

Stack Overflow用户
提问于 2018-09-25 09:54:13
回答 1查看 1.3K关注 0票数 4

我的基于React的MERN应用程序在Google app engine上运行。这也有一个MYSQL连接,它在localhost (XAMPP MYSQL数据库)上工作良好。我在Google Cloud上创建了一个SQL实例,并具有实例连接名称。但是我变得无法连接错误。

代码语言:javascript
复制
    Error: getaddrinfo ENOTFOUND
code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'MyGoogleProject-1537065009201:asia-south1:MyProj',
  host: 'MyGoogleProject-1537065009201:asia-south1:MyProj',
  port: 3306,
  fatal: true }
    at errnoException (dns.js:50:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)

这是我在Local上工作的应用程序代码。下面是我的env.js

代码语言:javascript
复制
  "MYSQL_HOST": "localhost",
  "MYSQL_USER": "GoogleDBUser",
  "MYSQL_PASSWORD": "GoogleDBPassword",
  "MYSQL_DATABASE": "GoogleDB1",

下面是MYSQL连接的代码:

代码语言:javascript
复制
// RETUNS MYSQL DATABASE
const mysql = require('mysql'),
  { error } = require('handy-log'),
  { MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE } = process.env

const options = {
  user: MYSQL_USER,
  password: MYSQL_PASSWORD,
  database: MYSQL_DATABASE,
}

options.socketPath = `/cloudsql/<Instance_Conn_Name>`

const db = mysql.createConnection(options)

module.exports = db

连接到Google MYSQL还需要什么?我不知道在上面的代码中添加Google SQL实例名称的位置。

当我使用Google Cloud SQL时,上面有没有不同于普通Xamp MYSQL的代码需要添加?

EN

回答 1

Stack Overflow用户

发布于 2018-09-25 23:50:29

您没有正确地构建连接。您需要使用/cloudsql/连接字符串格式。从App Engine连接到云SQL时,这是必需的。看一下tutorial code class的20到30行:

代码语言:javascript
复制
const options = {
  user: config.get('MYSQL_USER'),
  password: config.get('MYSQL_PASSWORD'),
  database: 'bookshelf'
};

if (config.get('INSTANCE_CONNECTION_NAME') && config.get('NODE_ENV') === 'production') {
  options.socketPath = `/cloudsql/${config.get('INSTANCE_CONNECTION_NAME')}`;
}

const connection = mysql.createConnection(options);

我建议您查看完整的tutorial文档,以便更好地了解Cloud SQL - NodeJs。

还有一种方法可以授权所有IP地址连接到Cloud SQL (仍然需要用户名和密码),方法是将0.0.0.0/0添加到authorized networks,并在主机参数代码中使用MySQL公共实例IP地址。您不能授权特定的App Engine IP,因为它们会随时间变化“App Engine当前不提供将静态IP地址映射到应用程序的方法”。如here所述。这不是推荐的方法,因为任何人都可以向您的实例发送连接请求(尽管他们仍然需要用户名、密码、数据库名称等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52489523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档