Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 连接到Google云SQL_Google App Engine_Google Cloud Platform_Google Cloud Sql - Fatal编程技术网

Google app engine 连接到Google云SQL

Google app engine 连接到Google云SQL,google-app-engine,google-cloud-platform,google-cloud-sql,Google App Engine,Google Cloud Platform,Google Cloud Sql,我已经设置了一个功能完美的Google Cloud SQL,但是我在使用文档中给出的任何方法进行连接时遇到了问题: PDO 未捕获异常“PDOException”,消息为“SQLSTATE[HY000][2003]无法连接到“173.xxx.xx.xxx”(111)上的MySQL服务器”您无法使用unix套接字(仅在本地计算机上工作)进行远程连接,您需要通过网络进行连接 谷歌有一个解决方案,你需要做什么才能实现这一点,但基本上它归结为你需要授权你想要连接的IP号码/范围,并使用实例的公共IP连接

我已经设置了一个功能完美的Google Cloud SQL,但是我在使用文档中给出的任何方法进行连接时遇到了问题:

PDO


未捕获异常“PDOException”,消息为“SQLSTATE[HY000][2003]无法连接到“173.xxx.xx.xxx”(111)上的MySQL服务器”

您无法使用unix套接字(仅在本地计算机上工作)进行远程连接,您需要通过网络进行连接


谷歌有一个解决方案,你需要做什么才能实现这一点,但基本上它归结为你需要授权你想要连接的IP号码/范围,并使用实例的公共IP连接到数据库。

感谢你的快速响应。这是我最初尝试的,但仍然给我同样的错误。主机:实例ip,用户:root,密码:我设置的密码。如果我提交了站点的公共IP,你知道为什么会出现这样的错误吗?很奇怪,如果你打开了网络从你的IP连接,它应该可以正常工作。你能展示一下你正在使用的PDO连接字符串吗?(请混淆IP和密码,我只想看看一般结构)您的编辑肯定听起来像是防火墙问题。是否确实打开了访问数据库的IP范围?(即回答中链接的第1步)我没有设置范围-只是在ping我的网站时找到的公共IP。我是否应该将其设置为其他内容?@user2727128您应该设置您尝试连接的IP,即运行客户端的计算机,否则CloudSQL将不允许连接。
$db = new PDO('mysql:unix_socket=/cloudsql/hello-php:my-cloudsql-instance;charset=utf8','<username>','<password>');
$conn = mysql_connect(':/cloudsql/hello-php:my-cloudsql-instance', '<username>', '<password>');
$sql = new mysqli(null, '<username>', '<password>', null, null, '/cloudsql/hello-php:my-cloudsql-instance');
$host="173.xxx.xx.xxx" <-- given from Google Developers COnsole
$db_username="root";
$db_pasword="xxxx"; <-- password I set after creating the instance

mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect");
$dsn = 'mysql:host=173.xxx.xx.xxx;dbname=database_name';
$username = 'root';
$password = 'xxxx';

$dbh = new PDO($dsn, $username, $password);