我已經建立了其完美的功能但是我在使用連接麻煩谷歌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)'
感謝您的快速回復。這是我最初嘗試的,但仍然給我同樣的錯誤。主機:實例-IP,用戶:root,密碼我設置。如果我提交了該網站的公開IP,那麼爲什麼會出現這種錯誤? – user2727128
很奇怪,如果你打開網絡連接你的IP,它應該是正常的。你能顯示你正在使用的PDO連接字符串嗎? (請混淆IP和密碼,我只想看到一般結構) –
您的編輯確實聽起來像是防火牆問題。你確定你打開你的IP範圍來訪問數據庫嗎? (即第1步在答案中的鏈接) –