我有一个使用MySQL的Node应用程序,它通过配置json连接:
{
"client": "mysql",
"connection": {
"host": "something",
"user": "something",
"password": "something",
"database": "daimonion-db",
"debug": false
}
}
我已经创建了一个Google Cloud Platform SQL实例。我看到一个IP地址和实例连接名称。
我还在灵活的环境中将Node应用程序部署到Google Cloud App Engine。
如何将Node应用程序连接到SQL实例?我看到以下解释:https://cloud.google.com/sql/docs/mysql/connect-app-engine,它告诉我向我的app.yaml添加一个设置字符串以通过Unix域套接字或TCP连接进行连接,但是如何从Node应用程序连接至这些? / p>
答案 0 :(得分:1)
包括beta_settings
至app.yaml
以在生产中的实例上启用云代理,并在socketPath
中指定UNIX套接字config
,以便您的flex应用可以连接到通过代理实例。
socketPath
才应位于config
中。对于本地开发,TCP套接字与代理客户端一起使用,您需要安装并从以下命令开始:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306
这是一个使用代理连接和查询Cloud MySQL实例的Node应用程序示例。 if
语句允许应用程序自动切换配置dev-local / prod-appengine using environment variables。
app.yaml
runtime: nodejs
env: flex
env_variables:
SQL_USER: [SQL_USER]
SQL_PASSWORD: [SQL_PASSWORD]
SQL_DATABASE: [DATABASE_NAME]
INSTANCE_CONNECTION_NAME: [INSTANCE_CONNECTION_NAME]
beta_settings:
cloud_sql_instances: [INSTANCE_CONNECTION_NAME]
package.json
{
"engines": {
"node": "8.x.x"
},
"dependencies": {
"express": "4.16.3",
"mysql": "^2.15.0"
},
"scripts": {
"start": "node server.js"
}
}
server.js
const express = require('express');
const mysql = require('mysql');
const app = express();
var config = {
user: process.env.SQL_USER,
database: process.env.SQL_DATABASE,
password: process.env.SQL_PASSWORD
}
if (process.env.INSTANCE_CONNECTION_NAME && process.env.NODE_ENV === 'production') {
config.socketPath = `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`;
}
var connection = mysql.createConnection(config);
connection.connect();
app.get('/', (req, res) => {
connection.query(
'SELECT * FROM entries', function(err, result, fields){
if (err) throw err;
res.send(result);
}
);
});
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
答案 1 :(得分:0)
有两种方法可以从本地桌面连接Cloud SQL
实例:
postgresql
的示例
使用公共IP和psql
工具:https://cloud.google.com/sql/docs/postgres/connect-admin-ip
a。将您的外部IP添加到Cloud SQL
-CONNECTIONS
-Authorized networks
b。将您的connection.host
修改为Cloud SQL
实例公共IP
使用cloud_sql_proxy
工具和INSTANCE_CONNECTION_NAME
:https://cloud.google.com/sql/docs/postgres/connect-admin-proxy