当前位置: 首页 > 知识库问答 >
问题:

将 Google Cloud App Engine 上的 Node.js 应用连接到 Google Cloud SQL 实例

景胜涝
2023-03-14

我有一个使用 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它告诉我向我的应用程序添加设置字符串。yaml可以连接Unix域套接字或TCP连接,但如何从我的Node应用程序连接到这些套接字?

共有2个答案

戈睿识
2023-03-14

有两种方法可以从本地桌面连接云SQL实例:

postgresql示例

>

  • 使用公共 IP 和 psql 工具:https://cloud.google.com/sql/docs/postgres/connect-admin-ip

    a.将您的外部IP添加到CloudSQL-CONNECTIONS-授权网络

    b.将连接.主机修改云 SQL 实例公共 IP

    使用cloud_sql_proxy工具和INSTANCE_CONNECTION_NAME:https://cloud.google.com/sql/docs/postgres/connect-admin-proxy

  • 刁冠宇
    2023-03-14

    包括对 app.yaml beta_settings以在生产中的实例上启用云代理,并在配置中指定 UNIX 套接字套接字路径,以便您的 flex 应用程序可以通过代理连接到实例。

    仅当应用在 App Engine 上的正式环境中运行时,socketPath 才应处于配置状态。对于本地开发,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-loc/prod-appEngine。

    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]
    

    包.json

    {
      "engines": {
        "node": "8.x.x"
      },
      "dependencies": {
        "express": "4.16.3",
        "mysql": "^2.15.0"
      },
      "scripts": {
        "start": "node server.js"
      }
    }
    

    服务器.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.');
    });
    
     类似资料:
    • 我正在尝试将node.js连接到MySQL,但失败了。我已经安装了MySQL和相关库。如何解决此错误?另外,如果我想让数据响应为原生的,我应该如何去做呢? 收到的错误消息:

    • 我正在使用第二代Google Cloud Sql,并在灵活的环境中运行应用程序引擎实例。应用程序引擎连接到云sql以运行sql查询。我已经设置了一个连接池,以创建最少10个连接,最多200个连接。 然而,我读到了这篇文章——https://cloud.google.com/sql/docs/mysql/diagnose-issues其中写道:“在标准环境中运行的每个应用引擎实例与Google Cl

    • 问题内容: 我已经尝试过将多种XMPP库用于Node.js,但是在连接到Google Talk的XMPP服务器时遇到了麻烦。我想联系并阅读朋友的状态,但我什至无法走出去! 我有一个通过Google Apps for Domains托管的个人域,例如。 我编写了以下代码-它使用了node-xmpp库(https://github.com/astro/node-xmpp): 建立了连接,但是身份验证失

    • 本文向大家介绍Node.js 使用Mongoose连接到MongoDB,包括了Node.js 使用Mongoose连接到MongoDB的使用技巧和注意事项,需要的朋友参考一下 示例 首先,使用以下命令安装Mongoose: 然后,将其添加server.js为依赖项: 接下来,创建数据库模式和集合名称: 创建一个模型并连接到数据库: 接下来,启动MongoDB并server.js使用运行node s

    • 问题内容: 使用Node.js编写连接两个REST API的独立应用程序是否明智? 终点将是POS-销售点-系统 另一个将是托管的电子商务平台 将有一个用于配置服务的最小接口。而已。 问题答案: 是的,Node.js非常适合于调用外部API。就像Node中的所有内容一样,进行这些调用的功能都是基于事件的,这意味着要做一些事情,例如缓冲响应数据,而不是接收单个完整的响应。 例如: 如果要进行很多此类

    • 本文向大家介绍Node.js使用MySQL连接池的方法实例,包括了Node.js使用MySQL连接池的方法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Node.js使用MySQL连接池的方法。分享给大家供大家参考,具体如下: Nodejs如何使用MySQL Nodejs要连接MySQL,可以使用Nodejs的MysQL驱动来实现。比如,我们这里使用"node-mysql"连接数据库