nodeJS 应用程序无法连接到 google MySQL 数据实例

nodeJS app cannot connect to google MySQL data instance

我在付费帐户下的 google 控制台中托管了一个 nodeJS 应用程序。当我尝试将我的 nodeJS 应用程序连接到本地主机服务器中的 MySQL 数据库时,它正在工作,但是一旦我将其配置为在 google 云控制台中工作,它就说无法连接到数据库。我成功创建了一个 google SQL 实例并确定了用户名和密码,因为我可以通过云控制台连接到数据库。 参考了网上很多教程都没有办法....

 var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '1234',
    database: 'test'
  }); 


  con.connect(function(error){
    if(error){
      console.log('error');
    }
    else{
      console.log('connected');
    }
  });

由于这个问题被标记为 google-app-engine,我假设它是您用来部署应用程序的产品。在这种情况下:

App Engine 使用 Unix 套接字连接到云 SQL 实例,因此您需要传递实例的连接名称,如下例所示:

var con = mysql.createConnection({
  host: "localhost",
  socketPath: "/cloudsql/<PROJECT_ID>:<REGION>:<SQL_INSTANCE_NAME>",
  user: "root",
  password: "secret"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});

您实际上可以通过 运行 在本地 cloud_sql_proxy 并通过 unix 套接字连接进行测试。 Using Cloud SQL for MySQL 教程解释了如何做到这一点。

编辑:

如果您使用的是 App Engine Flex,在 app.yaml 上设置正确的 beta_settings 也很重要,如下例所示:

beta_settings:
  # The connection name of your instance, available by using
  # 'gcloud beta sql instances describe [INSTANCE_NAME]' or from
  # the Instance details page in the Google Cloud Platform Console.
  cloud_sql_instances: YOUR_INSTANCE_CONNECTION_NAME

您的本地计算机 sql 服务器无法连接到 google 控制台,因为它不是 暴露给 internet.You 应该在某个平台上托管你的 mssql 数据库,然后你 可以在 google console

中连接