如何将datalab与Google Cloud SQL连接?

时间:2018-05-22 17:20:47

标签: google-cloud-sql google-cloud-datalab

尝试从Datalab笔记本连接到Google Cloud SQL上托管的PostgreSQL数据库。尝试直接IP和实例连接方式,但两者都给我们一个例外。

直接连接URI:

"{engine}://{user}:{password}@{host}:{port}/{database}"

使用gcloud sql connect

"{engine}://{user}:{password}@/{database}?host=/cloudsql/{instance_connection_name}"

两者都给我们这个例外:

OperationalError: (psycopg2.OperationalError) could not connect to 
server: Connection timed out
  Is the server running on host "***.***.***.***" and accepting
  TCP/IP connections on port ****?

是否需要像Collab proxy connection中的云sql代理?如果需要如何使用datalab库?

2 个答案:

答案 0 :(得分:2)

我终于明白了。

假设Datalab VM已经在Gcloud上进行了身份验证,我尝试使用cloud_sql_proxy进行连接,而不使用Collab proxy connection上显示的auth python命令,并通过装箱丢失目录来修复仍然出现的错误。我得到了这个:

!wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
!mkdir -p /cloudsql
!chmod +x cloud_sql_proxy

!./cloud_sql_proxy --instances=project-id:europe-west1:posty --dir /cloudsql

与Collab解决方案一样,我们需要让笔记本在备用窗口中运行以保持代理。与其他笔记本电脑在同一台机器上,我们终于可以访问数据库了。

注意:可能更好的解决方案是编辑datalab机器的docker镜像以包含此行为,如上所述here

答案 1 :(得分:0)

可能是您的VM计算机IP未在数据库中列入白名单。

您可以访问该列表并在Google云端控制台上添加新的ips SQL> yor_database>授权。

点击此链接了解详情https://cloud.google.com/sql/docs/mysql/connect-external-app?hl=en_US&_ga=2.178999533.-851571953.1521816449#appaccessIP