GCP Cloud SQL (mySQL) - 连接到本地环境中的数据库

GCP Cloud SQL (mySQL) - connect to DB in local environment

我在连接我的 python3 - flask 应用程序(Google App Engine 上的 运行)与 mySQL 数据库实例时遇到问题。 具体来说 - 当我在 Google 云上的 shell 命令行中通过 'python main.py' 运行 开发服务器时,我无法连接。

我使用 pymysql 包并通过 create_engine 函数连接。

我已成功连接到已部署应用程序中的数据库: create_engine('mysql+pymysql://root:<pass>@/<instance>?unix_socket=/cloudsql/<project>:<region>:<database>')

我还设法从外部环境连接,通过在 Google SQL Cloud 和 运行ning 中授权我的本地网络 IP 地址: create_engine('mysql+pymysql://root:<pass>@<publicIP>/<database>')

在开发服务器中,我尝试使用 127.0.0.1、localhost、有和没有 :3306 端口等。但没有任何效果...

我可以通过gcloud sql connect <instance> --user=root直接从GoogleShell连接到数据库,所以看起来云Google[=41=之间的连接是授权的] 控制台和 SQL 云。 但是我如何使用 create_engine('mysql+pymysql://...')? 然后 运行 云中的 python main.py shell?

在此先感谢您的帮助! 干杯 J.

您可以使用 2 个解决方案来解决此问题:

  1. 请勿触摸您在 App Engine 上使用的 code/param

这是我的首选解决方案,因为您在本地和云端测试相同的东西。但是您需要相同的环境。首先使用 Unix 兼容环境(如果您使用 Windows,请跳过此解决方案)。

然后,您需要打开一个连接到 Cloud SQL 实例的 unix 套接字。为此,请下载 Cloud SQL proxy binary and open a tunnel following these steps。最终,运行 您的应用在另一个终端中。

  1. 使用自定义数据库连接字符串

在这种情况下,您将使用模式 create_engine('mysql+pymysql://root:<pass>@<publicIP>/<database>')。但是为此,您需要授权您的 public IP 访问您的 Cloud SQL 实例。为此,获取您的 public IP(许多网站在互联网上为您提供)并将其添加到您的 Cloud SQL 实例的 authorized networks 中(在末尾添加 /32您的 IP,因为它是必需的 IP 范围)。它应该有用!