繁体   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