我是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);
}
它给了我:"没有这样的文件或目录">
这个问题已经在这里解决了,你可以参考最后一个答案,它进一步指定了如何连接。
您需要确保启用了 sqladmin API,在项目根级别(与 app.yaml 相同(添加一个文件 php.ini并添加以下条目:
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);
让我知道这是否可以让您连接。