https://github.com/GoogleCloudPlatform/cloudsql-proxy
我发现可以通过使用以下命令设置模拟系统范围来实现这一点:gcloud config set auth/impersonate_service_account <MY_SERVICE_ACCOUNT>。
代理 exe 似乎读取了 gcloud 配置。
但这确实很笨拙。我想启动代理并指定要模拟的特定用户,而不必在系统范围内更改它。另外,我不会求助于生成不过期的 json 密钥 - 我想使用模拟。
许多 Gcloud 命令现在支持特定的开关,但代理 exe 不支持。请参阅此 GitHub 问题(谷歌没有回复):https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/417
我可以运行gcloud auth print-access-token --impersonate-service-account=<MY_SERVICE_ACCOUNT>并设置代理 exe 将拾取的环境变量还是其他什么?
除了提到 gcloud 之外,我在代码中找不到任何内容: https: //github.com/GoogleCloudPlatform/cloudsql-proxy/blob/eca37935e7cd54efcd612c170e46f45c1d8e3556/cmd/cloud_sql_proxy/cloud_sql_proxy.go#L160
- 当 gcloud 命令行工具安装在本地计算机上时,将使用“活动帐户”进行身份验证。运行“gcloud auth list”可查看本地计算机上安装了哪些帐户,运行“gcloud config list account”可查看活动帐户。
这很有趣,因为跑步时auth/impersonate_service_account gcloud config list account并没有说什么。
有没有办法让 Gcloud 在每个会话的基础上进行模拟?
编辑:只是为了跟进,根据答案--token完全有效,所以现在我可以使用 IAM 身份验证和模拟 gsa 同时运行代理:
# start proxy with IAM login as a GSA with a cloud sql service account setup …Run Code Online (Sandbox Code Playgroud) google-cloud-sql google-cloud-platform gcloud cloud-sql-proxy
我正在使用 Google Cloud SQL 第二代,并在本地计算机上安装了cloud-sql-proxy 。
在我的本地计算机上,我只需连接到 127.0.0.1:3306,并且在 NodeJs、Php 和使用 mysql 命令行客户端中运行良好。
在 Google App Engine 托管 VM(灵活环境)上,我使用 unix_socket 或 socketPath '/cloudsql/MY_PROJECT_ID:us-central1:SQL_INSTANCE' 这在 Php 和 NodeJs 中也运行良好。
MySQL Workbench 不起作用,我不知道如何连接它。它是否使用其他协议或者 cloud-sql-proxy 仅用于命令行?
这是我启动 cloud-sql-proxy 的方法
这有效:
./cloud_sql_proxy \
-instances=MY_PROJECT:us-central1:MY_SQL_INSTANCE=tcp:3306 \
-credential_file='/Users/ME/SomeFolder/MY_SERVICE_ACC_KEY.json'
Run Code Online (Sandbox Code Playgroud)
之后我使用 MySQL Workbench 尝试连接到 127.0.0.1:3306,但总是收到错误:
SSL connection error: socket layer receive error
Run Code Online (Sandbox Code Playgroud)
本地 PHP、NodeJS 和 mysql 客户端也可以工作。
任何帮助,将不胜感激
我目前正在 Kubernetes 中运行 Spring Boot Pod。云 SQL 代理的 pod 中有一个侧车。
下面是我的 spring Boot application.properties 配置:
server.port=8081
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.continue-on-error=true
spring.datasource.url=jdbc:mysql://localhost:3306/<database_name>
spring.datasource.username=<user_name>
spring.datasource.password=<password>
Run Code Online (Sandbox Code Playgroud)
下面是我的带有插件和依赖项的 pom.xml 摘录:
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ca.performance.common</groupId>
<artifactId>common-http</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory</artifactId>
<version>1.0.10</version>
</dependency>
<dependency> …Run Code Online (Sandbox Code Playgroud) Google Cloud Run 允许使用 Cloud SQL。但是,如果您在 Google Cloud Build 中构建容器时需要 Cloud SQL,该怎么办?那可能吗?
我有一个 Next.js 项目,它在 Google Cloud Run 上的容器中运行。将我的代码推送到 Cloud Build(安装内容、生成静态页面并将所有内容放入容器中)并部署到 Cloud Run 非常有效。
但是,我只是添加了一些功能,其中它还需要来自我在 Google Cloud SQL 上运行的 PostgreSQL 实例的一些数据。在构建项目(生成静态页面)时使用此数据。
在本地,在我的机器上,这工作正常,因为该项目可以连接到我的 CloudSQL 代理。在 CloudRun 中运行时,这也应该有效,因为 Cloud Run 允许连接到 Cloud SQL 上的 Postgres 实例。
使用 Cloud Build 构建我的项目时,我需要访问我的数据库才能生成我的静态页面。我正在寻找一种将我的 Docker 云构建器连接到 Cloud SQL 的方法,也许就像 Cloud Run(完全托管)提供了一种使用 Cloud SQL 代理进行连接的机制。
这样我就可以/cloudsql/INSTANCE_CONNECTION_NAME在构建我的项目时连接到它!
所以我的问题是:在 Google Cloud Build 上构建我的项目时,如何通过 Cloud SQL 代理连接到我在 Google Cloud SQL 上的 PostgreSQL …
google-cloud-sql google-cloud-platform cloud-sql-proxy google-cloud-build google-cloud-run
我在启动 Google SQL 代理时遇到问题。
我这样安装代理:
$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
$ mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy
$ chmod +x cloud_sql_proxy
$ sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试运行代理时:
$ ./cloud_sql_proxy -dir=/cloudsql -instances=myproject:us-central1:mydb
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
googleapi: Error 403: Request had insufficient authentication scopes., forbidden
Run Code Online (Sandbox Code Playgroud)
我按照文档中的描述启用了 Google API。“Compute Engine”和“Cloud SQL”都在同一个项目中。我预计不需要额外的身份验证。
请指教。
谢谢。
mysql google-api mysql-proxy google-cloud-platform cloud-sql-proxy
我正在测试以下配置。
通过上述配置,我可以使用以下命令从 TestVM-1 登录到 testsql-1:
`mysql -h 127.0.0.1 --port 9090 -u testuser -D testDB -p`
Run Code Online (Sandbox Code Playgroud)
但是我无法在上述命令中使用 TestVM-1 的内部 IP。它给出了一个错误。
另一个观察结果是我能够做到telnet 127.0.0.1 9090,但是当我尝试telnet <VM -Internal-IP> 9090返回连接拒绝错误时。
有谁知道这是否是预期的行为?如果这是预料之中的,为什么会这样呢?
多年来,我一直在从 Windows 上的 CloudSQL 代理连接到 Google Cloud Platform MySQL。突然之间,我无法连接。
当我使用 PowerShell 启动代理时,它可以正常启动并说准备好新连接。然后当我尝试在 127.0.0.1 上连接到它时,客户端将报告:“在查询过程中丢失与 MySQL 服务器的连接 (127.0.0.1:3306)”
CloudSQL Proxy 会在终端报:“错误:新的临时证书过期太快:当前时间:2019-06-28 23:54:29 +0000 UTC,证书过期:2019-06-28 16:54:25.8818364 - 0700 PDT 米=+291.599345701"
任何想法会导致这种变化以及如何处理它?
我的 GCE 实例和 Python 代码仍然能够很好地与数据库交互。
我还尝试从 Cloud Shell 连接并得到:“ERROR 1045 (28000): Access denied for user 'root' gcp mysql”
mysql google-cloud-sql google-cloud-platform cloud-sql-proxy
如何为 Cloud Composer 集群启动云代理
目前我们使用气流来管理作业和动态 DAG 创建。为此,编写一个单独的 Dag 来检查 PostgreSQL 中的数据库表是否存在现有规则,并且如果规则在 PostgreSQL 中处于活动/非活动状态,我们会在 Airflow 中手动设置关闭/打开动态 DAG。现在,我们将使用 Google 自己的托管 Cloud Composer,但问题是我们无权访问 Cloud Composer 的数据库。如何使用云sql代理来解决这个问题呢?
google-cloud-platform kubernetes cloud-sql-proxy google-cloud-composer
按照此处的说明,我在使用我生成的令牌从 Azure Data Studio 连接到 DB 时遇到问题。它成功连接到数据库,但是一旦我想运行一个简单的查询(我已经在那里给了我的用户读取访问权限),它就会给我这个连接错误,我需要再次使用令牌进行连接并且断开连接再次发生一段时间后随机:
FATAL:失败,用户Cloud SQL的IAM用户身份验证“user@company.com” FATAL:pg_hba.conf里拒绝为主机连接“ 。。,用户”user@company.com“数据库”DB-名“,SSL关”
我进行了一些搜索,发现还有一种使用 Cloud SQL Auth 代理通过 IAM 数据库身份验证登录的方法,但文档仅限于 Postgress 命令行,而不是像 Azure Data Studio 这样的 GUI 数据库工具。如果您想在这种情况下连接 GUI 工具,任何人都可以对此有所了解吗?
关于更改pg_hba.conf文件,因为我使用的是云 SQL 实例,所以我不确定如何在云实例上关闭sslmode。我检查了我的实例的连接选项卡并SSL encryption没有在那里检查(不确定是否相同),并且我将 sslmode 更改为在我的 Azure Data Studio 上禁用连接,但在此更改后它不允许我进行连接:
FATAL: pg_hba.conf rejects connection for host "*.*.*.*", user "user@company.com", database "database", SSL off
Run Code Online (Sandbox Code Playgroud)
帮助,有人吗?
postgresql google-cloud-sql google-cloud-platform cloud-sql-proxy google-cloud-iam
我一直在尝试使用该pg模块连接到我的 Cloud SQL 实例,但到目前为止还没有成功。
我在网上看了很多,但对这个话题不太了解。我还想在某个时候在 Cloud Run 上部署我的 Express 应用程序并将其连接到我的 Cloud SQL 实例,但我不知道如何去做。
这是我不明白的事情的列表,并希望对以下内容进行简要说明:
以下是我尝试使用该pg.Client对象的所有连接对象和连接字符串:
postgresql+psycopg2://postgres:password@/cloudsql/myapp:us-central1:mydb?host=/var/lib/postgresqlpostgresql://postgres:password@hostip:5432/myapp:us-central1:mydbpostgresql://postgres:password@hostip:5432/sarcdb{ host: "/cloudsql/myapp:us-central1:mydb", username: "postgres", password: "password", database: "mydb" }所有这些都给我一个Connection terminated unexpectedly错误。
postgresql database-connection google-cloud-sql cloud-sql-proxy google-cloud-run
cloud-sql-proxy ×10
mysql ×3
kubernetes ×2
postgresql ×2
gcloud ×1
google-api ×1
mysql-proxy ×1
spring ×1
spring-boot ×1