Правильный способ подключения к 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".