4

我已经设置了一个运行良好的 Google Cloud SQL,但是我无法使用文档中给出的任何方法进行连接:

PDO

$db = new PDO('mysql:unix_socket=/cloudsql/hello-php:my-cloudsql-instance;charset=utf8','<username>','<password>');

mysql_connect

$conn = mysql_connect(':/cloudsql/hello-php:my-cloudsql-instance', '<username>', '<password>');

mysqli

$sql = new mysqli(null, '<username>', '<password>', null, null, '/cloudsql/hello-php:my-cloudsql-instance');

我可以从 MySQL 工作台远程连接,但每当我尝试使用上述功能从网站尝试时,我都会收到“在'读取初始通信数据包'时与 MySQL 服务器的连接丢失”-但我通过授权网络授予 Cloud SQL 访问权限并检查了 IP给定的。我相信这与我不是试图从 Google App Engine 而是从我自己的开发数据库连接这一事实有关。如何从 Google 外部连接!?

更新:我已经通过各种方式验证了我的 IP,但这段代码仍然无法正常工作。

$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");

此页面给出了错误:

警告:mysql_connect() [function.mysql-connect]:在“读取初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:第 5 行 /..../connect.php 中的 111 无法连接

当我尝试这个 PDO 连接时,我也得到一个错误:

$dsn = 'mysql:host=173.xxx.xx.xxx;dbname=database_name';
$username = 'root';
$password = 'xxxx';

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

未捕获的异常 'PDOException' 和消息'SQLSTATE [HY000] [2003] 无法连接到 MySQL 服务器在 '173.xxx.xx.xxx' (111)'

4

1 回答 1

4

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

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

于 2014-03-12T18:04:38.000 回答