Правильный способ подключения к Google Cloud SQL из Node.JS

Я последовал примеру того, как настроить Node.JS для работы с Cloud SQL, и, как правило, заставил его работать, но с некоторыми обходными путями, как подключиться к серверу SQL. Я не могу правильно подключиться, передавая INSTANCE_CONNECTION_NAME к socketPath вариант options переменная для createConnection() метод. Вместо этого, в качестве временного обходного пути, я в настоящее время указываю IP-адрес сервера и помещаю IP-адрес своей виртуальной машины в настройки брандмауэра сервера, чтобы пропустить его.

Это все работает, но я сейчас пытаюсь собрать все правильно перед публикацией в AppEngine.

Как я могу заставить его работать?

Следующий код работает нормально:

function getConnection ()
{
  const options = 
  {  
    host: "111.11.11.11", //IP address of my Cloud SQL Server
    user: 'root',
    password: 'somePassword',
    database: 'DatabaseName'
  };
  return mysql.createConnection(options);
}

Но следующий код, который я комбинирую из Учебника и со страницы Github, на которую ссылается Учебник, дает ошибки:

function getConnection ()
{
  const options = 
  {  
    user: 'root',
    password: 'somePassword',
    database: 'DatabaseName',
    socketPath: '/cloudsql/project-name-123456:europe-west1:sql-instance-name'
  };
  return mysql.createConnection(options);
}

Вот ошибка, которую я получаю:

{ [Error: connect ENOENT /cloudsql/project-name-123456:europe-west1:sql-instance-name]
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'connect',
  address: 'cloudsql/project-name-123456:europe-west1:sql-instance-name',
  fatal: true }

Что я делаю неправильно? Я обеспокоен тем, что, если я опубликую приложение в AppEngine с IP-адресом, я не смогу разрешить входящий трафик на сервер SQL?

2 ответа

Я столкнулся с подобной ошибкой при тестировании 'coud sql'.

  • сообщение об ошибке: Ошибка: подключить ENOENT /cloudsql/xxx-proj:us-central1:xxx-instance
  • решение:

+ ------------------------------------------------- --------- +
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod + x cloud_sql_proxy
sudo mkdir / cloudsql; sudo chmod 777 / cloudsql
./cloud_sql_proxy -dir = / cloudsql &

=> now node js server can connect to mysql

обратитесь к руководству: https://cloud.google.com/appengine/docs/flexible/nodejs/using-cloud-sql

Развертываете ли вы приложение AppEngine в том же регионе, что и база данных SQL? (Европа-West1)

В документации по адресу https://cloud.google.com/sql/docs/mysql/connect-app-engine говорится: "Ваше приложение должно находиться в том же регионе, что и ваш экземпляр Cloud SQL".

Другие вопросы по тегам