繁体   English   中英

带有React应用程序的Google Cloud SQL中的MYSQL连接错误

[英]MYSQL connection error in Google Cloud SQL with a React Application

我基于React的MERN应用程序在Google App引擎上运行。 这也有一个MYSQL连接,该连接在本地主机(XAMPP MYSQL数据库)上运行良好。 我在Google Cloud上创建了一个SQL实例,并具有实例连接名称。 但是我无法连接错误。

    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)

这是我在本地工作的应用程序代码。 以下是我的env.js

  "MYSQL_HOST": "localhost",
  "MYSQL_USER": "GoogleDBUser",
  "MYSQL_PASSWORD": "GoogleDBPassword",
  "MYSQL_DATABASE": "GoogleDB1",

这是MYSQL连接的代码:

// 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不同的其他代码?

您没有正确建立连接。 您需要使用/ cloudsql /连接字符串格式。 从App Engine连接到Cloud SQL时,这是必需的。 看一下教程代码类的 20至30行:

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);

建议您阅读完整的教程文档,以更好地了解Cloud SQL-NodeJ。

还有另一种方法,您可以通过将0.0.0.0/0添加到授权网络并在HOST参数代码中使用MySQL公共实例IP地址来授权所有IP地址连接到Cloud SQL(仍需要用户名和密码)。 因为他们从不时改变描述您不能授权特定的App Engine的IP“的App Engine目前不提供一种方式来静态IP地址映射到一个应用程序。” 在这里 不建议使用这种方法,因为任何人都可以向您的实例发送连接请求(尽管他们仍然需要用户名,密码,数据库名称等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM