【问题标题】:Issue in connecting Python with MySQL on Google Cloud Platform在 Google Cloud Platform 上连接 Python 和 MySQL 的问题
【发布时间】:2021-03-01 11:24:25
【问题描述】:

我在 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 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机有没有回应)

我不确定如何修复我的代码和/或解决给定的错误。请询问我是否需要有关错误消息的更多详细信息以帮助解决该问题。我将非常感谢为解决这些问题而获得的所有帮助。

【问题讨论】:

  • 您的 MySQL 数据库部署在哪里?在计算引擎上?在 Cloud SQL 上?
  • 还要添加哪个版本的 MySQL。
  • MySQL 数据库位于 Google Cloud Platform 上。 MySQL 8.0 是版本。

标签: python mysql google-cloud-platform


【解决方案1】:

我在这里看不到的一件事是您是否已将 Cloud SQL 实例配置为接受连接。

您可以将其配置为使用其“私有 IP”内部网络魔法从 GCP 平流层内接受连接,并且您可以将其配置为使用公共 IP 和授权外部网络(如如果您从 Amazon EC2 实例或他们的 Cloud SQL 代理工具(我用来从笔记本电脑连接到 Cloud SQL 实例)访问您的 GCP Cloud SQL 实例。

  1. 在 GCP Console 中,转到您的项目
  2. 从汉堡菜单中,选择 SQL
  3. 点击您的 Cloud SQL 实例
  4. 在左侧导航中,单击连接
  5. 如果您已选中私有 IP 并且您在 GCP 计算/GKE 资源上运行此代码,请确认“网络”字段设置为该资源使用的网络。
  6. 如果您只是尝试从本地计算机获取连接,并且没有要列入白名单的静态 IP,则最好的选择是将公共 IP 与 Cloud SQL Proxy 结合使用。

Cloud SQL 代理本质上是创建一个 TCP 隧道,允许您的笔记本电脑连接到您指定的端口上的“localhost”,然后它将您的连接重定向到远程 Cloud SQL 实例。

一旦您确定您的网络情况不是问题,您可以使用上面编写的相同 Python 连接代码,但将 HOST 更改为 127.0.0.1 并为 PORT=3308 添加一个属性。


编辑添加:我建议为您的 cloud_sql_proxy 连接使用 PORT=3308,这样它就不会干扰您可能已经在本地计算机上实际运行的任何现有端口 3306(MySQL 默认)连接。如果不是这种情况,您可以省略 PORT 属性或保持显式,但将其更改为 3306。

【讨论】:

  • 我正在从 Jupyter Notebook 运行 Python 代码。我使用命令提示符在线启动 Jupyter Notebook,使用该代码打开 .ipynb 文件,然后从那里运行代码。似乎我正在尝试从本地计算机获取连接,但我没有静态 IP 可列入白名单,基于此,我正在尝试执行第 6 步。请让我知道此信息,无论我是否我正在解决问题的正确轨道上。
  • @MihirRavishankar 是的,如果您在本地机器上运行 Jupyter Notebook,那么使用 Cloud SQL 代理是您想要的方向。
  • 我曾尝试使用 Cloud SQL 代理,但遇到了一些问题。我想安排一个电话,以便您解释我的问题并获得解决问题的帮助。我的电子邮件地址是 mihir.ravishankar@gmail.com。请随时通过此电子邮件地址与我联系,我们可以从那里安排电话。
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多