
我成功建立了一個 Compute Engine 虛擬機器實例,並使用本指南在其上安裝了 MySQL: https://cloud.google.com/solutions/setup-mysql
現在我想從 App Engine 連接到它,如果可能的話也從我的家連接到它。使用本指南:https://cloud.google.com/appengine/docs/standard/python/connecting-vpc 我創建了連接器,並為其提供了建議的 10.8.0.0/28 IP 位址。
在我的應用程式引擎的 app.yaml 中,我插入了: vpc_access_connector: name:projects/locationconnection/locations/europe-west3/connectors/vpcaccess
VM 實例顯示內部 IP 10.156.0.2 和外部 IP 34.89.141.17
我正在嘗試使用以下行從 PHP 進行連接: new mysqli($servername, $username, $password, $dbname, 3306, null);但我得到了不同的錯誤。
從我家連接到34.89.141.17時: mysqli::__construct(): (HY000/2002): 無法連接,因為目標機器主動拒絕。 (我甚至創建了一條防火牆規則來允許來自我的家庭 IP 的所有流量)
從 App Engine 連線到 10.8.0.0 時:2002:連線逾時
從 App Engine 連線到 10.156.0.2 時:2002:連線被拒絕
我怎樣才能建立連結?
答案1
在指南上如何在 Google Compute Engine 上設定 MySQL顯示如何設定 Mysql,但請記住 Mysql 有自己的配置。根據您提到的錯誤,問題與 Mysql 允許外部連線有關。當您新增使用者並向他們(或現有使用者)授予權限時,您需要指定允許該使用者連線的主機或網路範圍。例如,此行GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
向 root 使用者授予所有權限,並允許 root 使用者從所有主機進行連線(@ 後面的「%」是通配符,表示來自所有主機)。您可以對專用網路使用通配符,10.156.0.%
主機申請公用 IP 或來自您的專用網路的 IP。檢查此網站以獲取更多信息如何允許遠端連接 MySQL。請記住廣泛開放的允許主機策略的安全風險。