连接到谷歌云SQL
问题描述:
我已经建立了其完美的功能但是我在使用连接麻烦谷歌Cloud SQL的任何文档中给出的方法:连接到谷歌云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-连接]:在/ 111:在 '读初始通信分组',系统错误而丢失连接到MySQL服务器。 ... /第5行 connect.php无法连接
当我尝试这个PDO连接我也得到一个错误:
$dsn = 'mysql:host=173.xxx.xx.xxx;dbname=database_name';
$username = 'root';
$password = 'xxxx';
$dbh = new PDO($dsn, $username, $password);
未捕获的异常“PDO SQLSTATE [HY000] [2003]无法连接到MySQL服务器'173.xxx.xx.xxx'(111)'
答
您无法使用unix套接字进行远程连接只在本地计算机上),则需要通过网络进行连接。
谷歌有一个brief description你需要做的事情,但基本上归结为你需要授权你想连接的IP号码/范围,并使用公共IP地址连接到数据库该实例。
感谢您的快速回复。这是我最初尝试的,但仍然给我同样的错误。主机:实例-IP,用户:root,密码我设置。如果我提交了该网站的公开IP,那么为什么会出现这种错误? – user2727128
很奇怪,如果你打开网络连接你的IP,它应该是正常的。你能显示你正在使用的PDO连接字符串吗? (请混淆IP和密码,我只想看到一般结构) –
您的编辑确实听起来像是防火墙问题。你确定你打开你的IP范围来访问数据库吗? (即第1步在答案中的链接) –