mysql - Cloud Run:连接到 Cloud SQL 实例
问题描述
在 Cloud Run 上运行映像时,我无法连接到 Cloud SQL 实例。这个功能还有效吗?
我已使用 Compute Engine 成功连接到同一个 SQL 实例。
尝试使用简单的 shell 命令连接到 Cloud SQL 实例:
mysql --host=$MYSQL_IP --user=$MYSQL_ROOT --password=$MYSQL_PASS -e "SHOW DATABASES"
结果记录如下:
错误 2003 (HY000): 无法连接到 ' .*上的 MySQL 服务器。. ' (110)
解决方案
这个问题是在 Cloud Run 达到 GA(通用可用性)的几个月前提出的。
Cloud Run(全托管)现在支持使用数据库的公共 IP 地址连接到 Cloud SQL 实例(MySQL 和 PostgreSQL)。
gcloud run services update run-mysql \
--add-cloudsql-instances [INSTANCE_CONNECTION_NAME] \
--set-env-vars CLOUD_SQL_CONNECTION_NAME=[INSTANCE_CONNECTION_NAME],\
DB_NAME=[MY_DB],DB_USER=[MY_DB_USER],DB_PASS=[MY_DB_PASS]
...whereINSTANCE_CONNECTION_NAME
的格式为(由Cloud Console 中 Cloud SQL 实例的“概览”部分PROJECT_ID:REGION:INSTANCE_ID
返回或提供)。gcloud sql instances describe <INSTANCE-ID> | grep connectionName
请注意,Cloud Run 用于授权您连接到 Cloud SQL 的服务帐号必须具有正确的 IAM 权限,如果数据库实例和 Cloud Run 服务不属于同一项目,则需要进行一些配置。
以上内容负责 Cloud Run 和 Cloud SQL 之间的连接。让您的应用程序实际与 Cloud SQL 实例对话需要使用位于 的 Unix 域套接字从您的 Cloud Run 服务进行/cloudsql/INSTANCE_CONNECTION_NAME
连接(顺便说一句,这些连接会自动加密)。
不同的语言和不同的数据库驱动程序将使用不同的方式连接到 Cloud SQL 实例。这个链接有更多细节。
推荐阅读
- angularjs - 如何将 ionic-native 导入 Ionic1/AngularJS 项目?
- nvidia - Vulkan API:支持的最大 MSAA 样本为 VK_SAMPLE_COUNT_8_BIT
- wordpress - 标题前的WordPress发布日期
- javascript - AjaxResponseText 为空
- javascript - 角度材料数据表导出,路由器链接的不同名称
- alpha-vantage - ```treat_info_as_error``` 在 Alpha Vantage python 模块中做了什么
- python - 使用 python 构建 vtkUnstructuredGrid 时如何避免循环?
- jquery - 如何写入自动完成 json 对象?
- python - Create sequence of squares centered
- java - Unix 文件 cmd 的 Java 包装器