【问题标题】:Connection from Google Cloud App Engine to Cloud SQL with PHP MySQLi doesn't work使用 PHP MySQLi 从 Google Cloud App Engine 连接到 Cloud SQL 不起作用
【发布时间】:2020-01-12 13:43:13
【问题描述】:

我是 Google Cloud 的新手,需要帮助才能将标准环境中的 PHP App Engine 与 Google Cloud SQL (MySQL) 连接起来。 它们位于同一区域,并且来自 MySQL Workbench 的连接有效。在工作台中,我使用来自 Google SQL 实例的公共 IP。 但是 MySQLi 给了我错误:“连接被拒绝”。我也用 PDO 尝试过,它给了我同样的错误。

这是我的 PHP 代码:

<?php
$host = '127.0.0.1';
$user = 'root';
$dbpassword = 'password';
$database = 'database';
$port = 3306;

$mysqli = new mysqli($host, $user, $dbpassword, $database, $port);
if ($mysqli->connect_errno) {
    die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}

这就是 app.yaml:

runtime: php72
handlers:
- url: /css
  static_dir: css

- url: /src
  static_dir: src

- url: /js
  static_dir: js

beta_settings:
  cloud_sql_instances: "project:europe-west3:instanceid=tcp:3306"

我希望任何人都可以帮助我。 谢谢。

编辑: 我也试过了:

$mysqli = new mysqli(null, $user, $dbpassword, $database, null, "/cloudsql/{connectionstring}");
if ($mysqli->connect_errno) {
    die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}

它给了我:“没有这样的文件或目录”

【问题讨论】:

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


    【解决方案1】:

    这个问题已经解决here,您可以参考最后一个答案,进一步说明如何连接。

    您需要确保sqladmin API已启用,在项目根目录添加一个文件php.ini(与app.yaml相同)并添加以下条目:

    Extension = “mysqli.so”
    

    添加一些环境变量(数据源名称、MySQL用户和密码)

    MYSQL_DSN: mysql:unix_socket=/cloudsql/datahouse;dbname=mydatabase
    
    MYSQL_USER: root
    
    MYSQL_PASSWORD: 'mypassword'
    

    最后你的连接字符串的名字应该是“/cloudsql/project-id”;

    $instance_name = "/cloudsql/YOUR_PROJECT_ID_WITHOUT_DB_NAME";
    
    $mysqli = mysqli_connect(null, YOUR_DB_USER ,YOUR_DB_PASS, 'DB_NAME',null,$instance_name);
    

    如果这样可以让你连接,请告诉我。

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2018-11-05
      • 2020-06-07
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多