应用引擎无法连接到Google云sql

jad*_*jad 8 php google-app-engine google-cloud-sql

我的Google应用引擎应用无法通过此错误连接到Google云sql实例:

'PDOException' with message 'SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
Run Code Online (Sandbox Code Playgroud)

我检查了文档,并严格按照说明进行操作.我将应用程序添加为授权应用程序,并使用云控制台设置root密码.我还给了instace一个ip地址,可以从本地开发机器上的Workbench连接到它.使用工作台,我添加了用户和配置的权限.但我仍然无法从应用程序的开发版本(与工作台相同的ip)或已部署的应用程序连接到它.

这是我的连接线:

$conn = new PDO('mysql:unix_socket=/cloudsql/****:****;charset=utf8', 'the_username', 'its_password');
Run Code Online (Sandbox Code Playgroud)

这个问题似乎与这个问题相似.但是,即使在设置新用户并授予权限后,我仍然无法连接.知道我哪里错了吗?

谢谢

小智 8

请注意,设置root密码仅应用来自IP的连接.App Engines的连接显示MySQL服务器来自localhost.因此,请确保"root @ localhost"的密码是您在代码中配置的密码.

检查密码状态的快速方法是通过IP连接并发出以下查询:

mysql> SELECT user,host,password FROM mysql.user;
+-------+-----------+-------------------------------------------+
| user  | host      | password                                  |
+-------+-----------+-------------------------------------------+
| root  | localhost |                                           |
| root  | 127.0.0.1 |                                           |
| root  | ::1       |                                           |
|       | localhost |                                           |
| root  | %         | *3D56A309CD04FA2EEF181462E59011F075C89548 |
| admin | 127.0.0.1 |                                           |
+-------+-----------+-------------------------------------------+
6 rows in set (0.11 sec)

mysql> SELECT password('xxx');
+-------------------------------------------+
| password('xxx')                           |
+-------------------------------------------+
| *3D56A309CD04FA2EEF181462E59011F075C89548 |
+-------------------------------------------+
1 row in set (0.11 sec)

mysql>
Run Code Online (Sandbox Code Playgroud)

上面显示了在通过IP('root @%')到'xxx'的连接设置root密码后如何显示实例.请注意,"root @ localhost"的密码为空,因此App Engine的连接仍然不需要任何密码.