nodeJS应用无法连接到Google MySQL数据实例

时间:2019-09-16 09:32:01

标签: mysql node.js google-app-engine google-cloud-platform google-cloud-console

我在付费帐户下在Google控制台中托管了一个nodeJS应用程序。当我尝试将NodeJS应用程序连接到localhost服务器中的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');
    }
  });

2 个答案:

答案 0 :(得分:1)

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

App Engine使用Unix套接字连接到Cloud 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

答案 1 :(得分:0)

您的本地计算机sql服务器无法连接到Google控制台,因为它没有 暴露在互联网上。您应该在某个平台上托管mssql数据库,然后 可以在Google控制台中与其连接