3

我正在使用 Google Cloud SQL 第二代并在我的本地机器上安装了cloud-sql-proxy 。

在我的本地机器上,我只需连接到 127.0.0.1:3306,这在 NodeJs、Php 和使用 mysql 命令行客户端中运行良好。

在 Google App Engine Managed 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'

之后我会使用 MySQL Workbench 尝试连接到 127.0.0.1:3306,但我总是得到一个错误:

SSL connection error: socket layer receive error

本地 PHP、NodeJS 和 mysql 客户端可以工作。

任何帮助,将不胜感激

4

2 回答 2

5

好的,我得到它的工作,并相信它可能对其他人也有用:

我无法让它通过 tcp 连接工作,但我想出了如何使用在没有保险丝的情况下运行的套接字方法:

sudo  ./cloud_sql_proxy \
  -dir=/cloudsql \
  -instances=MY_PROJECT:MY_SQL_REGION:MY_SQL_INSTANCE \
  -credential_file='/Users/ME/some_folder/MY_SERVICE_ACC_KEY.json'

这里有几件事:

  1. 该文件夹/cloudsql必须已经存在,例如sudo mkdir /cloudsql
  2. 不要输入错误的文件夹名称,真的不要
  3. 不要在后面指定 tcp 端口,instances否则它将使用 tcp 连接。
  4. sudo 是必要的

在 MySQL 工作台中:

  1. 选择Database > Manage Connections...
  2. Connection > Connection Method选择下Standard (TCP/IP)
  3. 设置Parameters不足Host: localhost Port:3306(虽然我认为这不重要)
  4. 转到Advanced>Others:输入socket=/cloudsql/MY_PROJECT:MY_SQL_REGION:MY_SQL_INSTANCE
  5. 点击Test Connection它应该为你的用户名和密码,成功。
于 2016-04-03T18:04:16.317 回答
1

此错误表明 MySQL Workbench 正在请求 SSL 连接,代理不支持该连接。代理始终在本地计算机和实例之间使用 SSL,因此无需在 MySQL 协议级别启用 SSL。

您可以尝试在 MySQL Workbench 连接设置中关闭 SSL 吗?

于 2016-04-03T21:26:59.183 回答