google-cloud-sql - 如何将 datalab 与 Google Cloud SQL 连接起来?
问题描述
尝试从数据实验室笔记本连接到托管在 Google Cloud SQL 上的 PostgreSQL 数据库。尝试直接 IP 和实例连接方式,但都给我们一个例外。
直接连接 URI:
"{engine}://{user}:{password}@{host}:{port}/{database}"
使用 gcloud sql 连接
"{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 代理连接中那样的云 sql 代理?如果需要如何使用datalab库来做到这一点?
解决方案
我终于明白了。
假设 datalab VM 已经在 Gcloud 上进行了身份验证,我尝试使用 cloud_sql_proxy 进行连接,而不使用 Collab代理连接上出现的 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
与协作解决方案一样,我们需要让笔记本在备用窗口中运行以保持代理。使用同一台机器上的其他笔记本,我们最终获得了对数据库的访问权限。
注意:可能更好的解决方案是编辑 datalab 机器的 docker 映像以包含此行为,如此处所述。
推荐阅读
- docker - AutoML 生成的容器立即返回 503 (GCP)。如何排除故障?
- c - 奇怪的 LD_PRELOAD 技巧 + gcc 析构函数行为
- python - 在没有周末的情况下实现 matplotlib 简洁的日期格式化程序
- python - 在 JSON 中接收表情符号 unicode 时出现 UnicodeEncodeError
- json - 如何在 HTTP 连接上以流模式返回数据?使用哪种格式?
- javascript - 实时时钟 Moment.js
- nsis - 为什么我的 nsis 脚本选择文件夹对话框没有出现?
- google-developers-console - 如何使应用程序默认设备助手的短信和通话记录权限?
- java - 多维数组(矩阵)丢失数据
- android - 无法运行 android 项目,因为 https://jcenter.bintray.com/ 已关闭