Ошибка подключения MYSQL в Google Cloud SQL с приложением React - PullRequest
0 голосов
/ 25 сентября 2018

Приложение MERN на основе My React работает на движке Google App.Это также имеет соединение MYSQL, которое прекрасно работало на локальном хосте (база данных XAMPP MYSQL).Я создал экземпляр SQL в Google Cloud и получил имя подключения экземпляра.Но я не могу подключиться к ошибкам.

    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

  "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.

Есть ли какой-либо другой код, который необходимо добавить выше, который отличается от обычного Xamp MYSQL, когда я вместо этого использую Google Cloud SQL?

1 Ответ

0 голосов
/ 25 сентября 2018

Вы неправильно строите соединение.Вам необходимо использовать формат строки / cloudsql / connection.Это необходимо при подключении из App Engine к облачному 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 - NodeJs.

Существует еще один подход, в котором вы можете авторизовать все IP-адреса для подключения к Cloud SQL (по-прежнему требуются имя пользователя и пароль), добавив 0.0.0.0/0 к авторизованным сетям и использование открытого IP-адреса MySQL в вашем коде параметров HOST.Вы не можете авторизовать определенный IP-адрес App Engine, так как он время от времени меняется «App Engine в настоящее время не предоставляет способ привязки статических IP-адресов к приложению». Как описано здесь .Это не рекомендуемый подход, поскольку любой может отправить запрос на подключение к вашему экземпляру (хотя он по-прежнему будет требовать имя пользователя, пароль, имя БД и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...