MySQL Workbench 无法与 Google Cloud SQL 代理配合使用

Su-*_*ang 3 mysql-workbench google-cloud-sql 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 客户端也可以工作。

任何帮助,将不胜感激

Su-*_*ang 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'
Run Code Online (Sandbox Code Playgroud)

这里有几件事:

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

在 MySQL 工作台中:

  1. 选择Database > Manage Connections...
  2. 在下面Connection > Connection Method选择Standard (TCP/IP)
  3. ParametersHost: localhost Port:3306(虽然我认为这并不重要)
  4. 转到Advanced>Others:输入socket=/cloudsql/MY_PROJECT:MY_SQL_REGION:MY_SQL_INSTANCE
  5. 点击Test Connection它应该是你的用户名和密码,成功。