如何从Google Colab访问Cloud SQL

时间:2018-11-06 21:17:01

标签: google-cloud-sql google-colaboratory

我有一个带有公共IP的Google Cloud SQL实例,只能通过列入白名单的IP并通过SSL连接进行访问。

我想知道如何使用Python从Google Colab连接到该数据库。

如果我尝试像任何外部应用程序一样进行连接,则由于“客户端”的ip未列入白名单(因此我无法将其列入白名单,并且很可能会造成不稳定),因此该连接被拒绝了< / p>

是否存在与Google App Engine一样的快捷方式,可以使用其实例和Google客户端连接到数据库?

谢谢

2 个答案:

答案 0 :(得分:1)

回答得有点晚了,但是我想我有一个解决方案,它涉及使用Cloud SQL Proxy。总体而言,您首先需要使用Gcloud SDK(Colab随附)进行身份验证,然后安装代理,然后启动它。我分两个步骤完成了

# gcloud login and check the DB
!gcloud auth login
!gcloud config set project [YOUR PROJECT ID]
!gcloud sql instances describe [YOUR CLOUDSQL INSTANCE ID]

最后一行将输出信息转储,我们特别希望connectionName。然后,下一个块下载代理,并告诉它为该CloudSQL实例代理:

# download and initialize the psql proxy
!wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
!chmod +x cloud_sql_proxy
# "connectionName" is from the previous block
!nohup ./cloud_sql_proxy -instances="[connectionName]"=tcp:5432 &
!sleep 30s

稍后,您可以(并且我发现这很有用),可以使用

检查代理的日志
!cat nohup.out

最后,您可以使用地址127.0.0.1:5432(或您在上面设置的任何端口)建立连接。我使用psycopg2这样建立连接

conn = psycopg2.connect(
    host='127.0.0.1', port='5432', database=[YOUR DB NAME],
    user=[USERNAME], password=[PASSWORD])

它似乎可以工作,尽管肯定比直接连接要慢一点。

答案 1 :(得分:0)

转到Google Cloud Console中的Cloud SQL实例页面。 转到Cloud SQL实例页面

单击实例名称以打开其“实例详细信息”页面。 选择连接选项卡。 选择公共IP复选框。 点击添加网络。 在“网络”字段中,输入要允许其连接的IP地址或地址范围。(对于colab,请添加两个网络:-34.0.0.0 / 8和35.0.0.0/8) 使用CIDR表示法。

(可选)输入该条目的名称。 单击完成。 点击保存以更新实例。

然后我使用pymysql模块连接到数据库,它正常工作!!

在合作中,

`pymysql.connect(host="enter publicIP present in overview of sql instance", user="root",passwd="", db="your database name") `