从Google Compute Engine访问Google Cloud SQL实例?

时间:2013-10-14 02:09:17

标签: google-cloud-sql google-compute-engine

花了几个小时后,这是我从GAE以外访问Cloud SQL的唯一真实文档:https://developers.google.com/cloud-sql/docs/external

问题是,这是针对Java应用程序的(通过JDBC)。

我需要从PHP,Dart或NodeJS应用程序中访问我的Cloud SQL DB。我想通过赋予我的GCE实例连接到Cloud SQL的权限,这很容易。但是没有安排套接字字符串(使用mysql驱动程序)似乎是有效的。

为了论证,让我说我正在尝试连接PHP应用程序。我的mysql连接数组如下所示:

(
  'driver'    => 'mysql',
  'unix_socket'     => '/cloudsql/project-id:instance-id',
  'host'      => 'localhost',
  'database'  => 'dbname',
  'username'  => 'root',
  'password'  => '',
  'charset'   => 'utf8',
  'collation' => 'utf8_unicode_ci',
  'prefix'    => '',
)

这和我一样接近,但我会得到一个通用的“无法通过套接字连接到本地MySQL服务器”错误。

3 个答案:

答案 0 :(得分:1)

虽然这是一个较老的问题,但我只是认为我应该分享我发现的与此有关的内容。

首先,您尝试连接到GCE实例上的MySQL服务器,而不是远程CloudSQL实例。

开始

  1. 进入仪表板并为您的CloudSQL实例请求IP。
  2. 转到CloudSQL访问控制并添加您的GCE IP地址。
  3. 通过mysql-client从GCE连接到CloudSQL并添加新的(非root用户)
  4. 使用CloudSQL IP和新的非root用户从GCE PHP文件访问CloudSQL。
  5. 希望这有帮助。

答案 1 :(得分:0)

Cloud SQL团队正致力于改善计算引擎的连接性。如果您将此问题发送至google-cloud-sql-discuss@googlegroups.com,他们将能够跟进。

答案 2 :(得分:0)

您可以间接连接I.E.创建一个基于Java的App Engine应用程序,为您提供数据库接口,并从您的PHP应用程序中使用该接口?

例如:Java App Engine App有一个'getEmployees'方法调用,它调用DB上的Select查询,然后格式化并将结果作为JSON文件返回。然后,您的PHP应用程序将调用此方法并使用JSON ...