MySQL Workbench无法与Google Cloud SQL代理一起工作。

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客户端可以正常工作。任何帮助都将不胜感激。
2个回答

5

好的,我已经将其翻译完成,并且相信这对其他人也会有帮助:

我无法通过tcp连接让它工作,但是我找到了如何使用socket方法在没有fuse的情况下运行:

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. 不要在instances后指定tcp端口,否则它将使用tcp连接。
  4. 需要使用sudo命令

在MySQL Workbench中:

  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 ,它应该要求您输入用户名和密码,成功。

1
...但我仍然很想知道为什么它不能在TCP/IP上工作 - Suau
但它适用于TCP/P。您在WB中的第2步指示了这一点。o_O - Mike Lischke
@MikeLischke 我认为第4步中的套接字选项会覆盖它,因为我可以将任何内容放入主机中,它仍然可以工作。请检查Vadims线程下的评论,这是一个MySQL Workbench的错误。 - Suau
注意:只有当运行“cloud_sql_proxy”的用户没有在“/cloudsql”目录中读写文件的权限时,才需要使用sudo。 - Kevin Malachowski

1
这个错误表示MySQL Workbench正在请求SSL连接,但代理不支持。代理始终在本地机器和实例之间使用SSL,因此无需在MySQL协议级别启用SSL。
您可以尝试在MySQL Workbench连接设置中关闭SSL。

1
我昨天在绝望的情况下做了那件事,但我又尝试了一次,并将“如果可用”更改为“从不”,仍然出现相同的错误。还有其他地方应该禁用SSL吗? - Suau
你可能遇到了这个bug:https://bugs.mysql.com/bug.php?id=74896。你使用的是哪个操作系统? - Vadim
OS X 10.11.4,我查看了错误报告,这可能就是它。 - Suau
1
确认了,这是一个Workbench(6.3.6 build 511 CE 64bit OS X)的bug,无论如何它都不会遵守SSL设置。在6.2.5.0 build 397 32bit OS X上运行良好。 - Suau
还有一件事,我还使用了本地的MySQL安装,它也可以在没有SSL的情况下连接。似乎Workbench总是会尝试连接,就好像被困在“如果可用”的模式中一样。但是本地的MySQL安装似乎能正确地返回SSL不可用的信息,或许cloud_sql_proxy也可以处理这个问题? - Suau
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接