无需代理即可从同一GCP项目访问GCP CloudSQL

时间:2018-10-08 14:25:23

标签: php google-cloud-platform google-cloud-sql

我对我认为可能很容易的事情深感困惑。当我学习如何使用Cloud SQL时,一直在寻找这一天没有运气。在应用引擎上有很多示例,但在将GCP虚拟机连接到GCP Cloud SQL的简单性方面却几乎没有。 Google的指示似乎并不完整。这是我所拥有的:

在同一GCP项目中,我创建了一个Bitnami LAMP VM。在同一项目中,我创建了一个CloudSQL实例,其中包含一个数据库和两个表。我的目的是尝试通过VM中的PHP脚本访问CloudSQL。 (是的,我知道我可以在VM上设置SQL Server,但是我的目的是学习如何访问CloudSQL)。请注意,所有内容都在同一个GCP项目中,因此据我了解,我不必使用SQL代理。

我也在项目中启用了CloudSQL API。

<?php
$DB_NAME = "dwelling_winebot";
$DB_USER = "winebot_reader";
$DB_PASS = "winebot_reader";
$tableName = "wines";
$mysqli = new mysqli(null, $DB_USER, $DB_PASS, $DB_NAME,null, "/cloudsql/web-sites-123456:us-central1:winebot");

... More code below

我在Apache error_log中遇到的错误是:

[08-Oct-2018 05:00:24 America/Los_Angeles] PHP Warning:  mysqli::__constru
ct(): (HY000/2002): No such file or directory in /opt/bitnami/apache2/htdo
cs/winebot/serverside/inforunner.php on line 25

(顺便说一句,第25行是$ mysqli行,而php文件名是inforunner.php,上面有php代码)

值得注意的事实:

  • 如果我运行“ gcloud sql实例,我可以看到数据库实例
    描述Winebot”
    • 我创建了一个名为winebot_reader的用户。。。我还尝试使用一些密码将“ root”作为“”密码 建议。没有运气。
    • cloudsql实例名称实际上是从控制台正确的项目名称,区域和数据库。
    • 我似乎没有一个带有套接字路径的本地/ cloudsql文件夹,有些文件建议我这样做?
    • 根据控制台,CloudSQL API已打开
    • 在mysqli调用的位置字段(第一个参数)中,我尝试过null,localhost,127.0.0.1。所有结果相同。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用内部IP代替不存在的套接字。

请参见Connecting MySQL Client from Compute Engine以供参考。