繁体   English   中英

PHP MySQL PDO 连接到 Google Cloud Z9778840A0100CB30C9822876741B0B 实例不工作

[英]PHP MySQL PDO Connection to Google Cloud SQL Instance from VM Instance not working

DSN 为: mysql:dbname='MyDB';unix_socket='/cloudsql/ethereal-accord-123456789:us-central1:dev-Instance'

连接失败:SQLSTATE[HY000] [2002] 没有这样的文件或目录

PDO 连接代码:

 try {
              $conn = new PDO($dsn, $username, $password);
              // set the PDO error mode to exception

              $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

              echo "Connected successfully";
              return $conn;

            } catch(PDOException $e) {
              echo "Connection failed: " . $e->getMessage().' <BR>';

            }

我似乎找不到有关如何正确设置连接的详细信息。 我遵循所有文档并激活了 VM IP、客户端 SQL API 和管理员 ZDB97344238714CA816 的权限。

任何帮助将不胜感激。

您没有运行 cloudsql 代理,或者您为套接字文件定义了另一个位置。 你应该检查一下。

./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:3306 &
$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=DATABASE_NAME';

https://cloud.google.com/sql/docs/mysql/connect-external-app#pdo-tcp

我使用这些行将我的代码恢复为 MYSqli 而不是 PDO

$host_name = "35.222.111.111";
$database = "myDB123";
$user_name = "dbuser123";
$password = "pass12345";
$GCSocket ="/cloudsql/ethereal-accord-2000000:us-central1:dev-instance-1"; $GCPort='3306';

$connect = mysqli_connect($host_name, $user_name,$password,$database,$GCPort,$GCSocket )
  if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error() ."<br>";
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL ."<br>";
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL  ."<br><br>";

         } else {

        echo 'DB is connected..! <BR>';
    }

    return $connect;

问题不在于上面的代码,它一直有效,问题是经过许可的。

  1. 我从云端 SQL 服务器中的 Compute Engine VM 将我的 IP 列入白名单
  2. 授予您的 Compute Engine 服务帐户访问云 SQL 的权限
    • 云 SQL 客户端或云 SQL 管理员
  3. 在 Compute Engine 虚拟机中执行此操作:
setsebool -P httpd_can_network_connect_db 1

瞧……这就是我找到答案的地方

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM