[英]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.