簡體   English   中英

在 Google Cloud Platform 上將 Python 與 MySQL 連接時出現問題

[英]Issue in connecting Python with MySQL on Google Cloud Platform

我在 Python 中使用了以下代碼:

import mysql.connector as mysql
import sys


HOST = "34.87.95.90" 
DATABASE = "CAO_db"
USER = "root"
PASSWORD = "*********" 


db_connection = mysql.connect(user=USER, password=PASSWORD, host=HOST, database=DATABASE)
cur = db_connection.cursor()

當我運行上述代碼時,我收到以下錯誤消息:

TimeoutError: [WinError 10060] 連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或者連接失敗,因為連接的主機沒有響應

InterfaceError: 2003: Can't connect to MySQL server on '34.87.95.90:3306' (10060 連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或者建立連接失敗,因為連接的主機沒有響應)

我不確定如何修復我的代碼和/或解決給定的錯誤。 請詢問我是否需要有關錯誤消息的更多詳細信息以幫助解決該問題。 我將非常感謝我在解決問題方面所能獲得的所有幫助。

我在這里沒有看到的一件事是您是否已將 Cloud SQL 實例配置為接受連接。

您可以將其配置為使用其“私有 IP”內部網絡魔術從 GCP 平流層內接受連接,並且您可以將其配置為使用公共 IP 和授權外部網絡的組合接受來自其他計算機的連接(就像如果你是從例如 Amazon EC2 實例訪問您的 GCP Cloud SQL 實例)或他們的 Cloud SQL 代理工具(這是我用來從我的筆記本電腦實例連接到我的 Cloud Z9778840A0100CB30C982876741 的工具)。

  1. 在 GCP 控制台中,go 到您的項目
  2. 從漢堡菜單中,select SQL
  3. 單擊您的雲 SQL 實例
  4. 在左側導航中,單擊連接
  5. 如果您選中了 Private IP 並且您在 GCP Compute/GKE 資源上運行此代碼,請確認“網絡”字段設置為該資源使用的網絡。
  6. If you're just trying to get a connection from your local machine and you don't have a static IP to whitelist, your best option is to use Public IP in combination with Cloud SQL Proxy .

Cloud SQL 代理本質上創建了一個 TCP 隧道,允許您的筆記本電腦連接到您指定的端口上的“localhost”,然后它將您的連接重定向到遠程 Cloud Z9778840A0100CB30C982876741B0 實例。

一旦確定您的網絡情況不是問題,您可以使用上面編寫的相同 Python 連接代碼,但將 HOST 更改為 127.0.0.1 並添加 PORT=3308 的屬性。


編輯添加:我建議為您的 cloud_sql_proxy 連接使用 PORT=3308,這樣它就不會干擾您可能已經在本地計算機上實際運行的任何現有端口 3306(MySQL 默認)連接。 如果不是這種情況,您可以省略 PORT 屬性或保持顯式,但將其更改為 3306。

暫無
暫無

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

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