无法将 Node.js 应用程序连接到云端 SQL 数据库

Trouble connecting Node.js app to Cloud SQL Database

我需要部署一个可以与数据库交互的 node.js 应用程序。我已经配置了云 SQL 数据库,为此我已将我的计算机 public IP 列入白名单。当我在本地 运行 我的应用程序时,一切都很好,我可以访问我的数据。但是,在使用 Google App Engine 进行部署时,我不知道如何连接到我的数据库。到目前为止我做了什么:

我阅读了我可能必须使用代理的文档。我真的不知道该怎么办,所以我什么也没做。您认为这是一种值得探索的方式吗?

提前致谢。

文档页面在这里:

https://cloud.google.com/sql/docs/mysql/connect-app-engine-standard

对于 Public IP 连接:

使用 Unix 套接字连接

正确配置后,您可以使用以下格式将您的服务连接到云 SQL 实例的 unix 域套接字:

/cloudsql/INSTANCE_CONNECTION_NAME

这些连接自动加密,无需任何额外配置。下面显示的代码示例摘自 GitHub 站点上更完整的示例。单击 GitHub 上的查看以查看更多信息。

警告:基于 Linux 的操作系统的最大套接字路径长度为 107 个字符。如果路径的总长度超过此长度,您将无法连接 App Engine 的套接字。

cloud-sql/mysql/mysql/server.jsView GitHub

  const dbSocketPath = process.env.DB_SOCKET_PATH || "/cloudsql"

  // Establish a connection to the database
  return await mysql.createPool({
    user: process.env.DB_USER, // e.g. 'my-db-user'
    password: process.env.DB_PASS, // e.g. 'my-db-password'
    database: process.env.DB_NAME, // e.g. 'my-database'
    // If connecting via unix domain socket, specify the path
    socketPath: `${dbSocketPath}/${process.env.INSTANCE_CONNECTION_NAME}`,
    // Specify additional properties here.
    ...config
  });
}

如果您使用私有 IP 连接,请忽略所有这些,您可以只使用端口为 3306(对于 MySQL)或 5432(对于 Postgres)的私有 IP。