簡體   English   中英

應用引擎無法連接到Google雲sql

[英]App engine fails to connect to Google cloud sql

我的Google應用引擎應用無法通過此錯誤連接到Google雲sql實例:

'PDOException' with message 'SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

我檢查了文檔,並嚴格按照說明進行操作。 我將應用程序添加為授權應用程序,並使用雲控制台設置root密碼。 我還給了instace一個ip地址,可以從本地開發機器上的Workbench連接到它。 使用工作台,我添加了用戶和配置的權限。 但我仍然無法從應用程序的開發版本(與工作台相同的ip)或已部署的應用程序連接到它。

這是我的連接線:

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

這個問題似乎與這個問題相似。 但是,即使在設置新用戶並授予權限后,我仍然無法連接。 知道我哪里錯了嗎?

謝謝

請注意,設置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>

上面顯示了在通過IP('root @%')到'xxx'的連接設置root密碼后如何顯示實例。 請注意,“root @ localhost”的密碼為空,因此App Engine的連接仍然不需要任何密碼。

從授權的App Engine應用程序連接到Cloud SQL時,不需要密碼(實際上,如果您嘗試使用密碼連接,則會失敗)。

將您的連接字符串更改為jdbc:google:mysql:///? user = root省略&password = part

我嘗試過的一件事是嘗試通過MySQL客戶端直接連接到我的應用程序到我的代理,看看我的代碼是否是問題:請參閱: 使用Cloud SQL Proxy連接mysql客戶端

這仍然不適合我,這讓我相信它可能與實際的網絡連接有關。 我注意到我在本地運行的Cloud SQL代理確實返回了正確的實例IP地址(錯誤看起來像這樣:

couldn't connect to "{connectionName}": dial tcp {ip address}:3307: getsockopt: operation timed out

您可以確認返回的IP地址與Cloud SQL Console中的IP地址匹配。

然后我嘗試通過不同的互聯網連接進行連接並且能夠連接。 原來是原始連接中的防火牆沒有讓連接發生! 仔細檢查可能阻止連接通過的任何安全設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM