Cloud SQL 代理错误 - 尝试以访问权限禁止的方式访问套接字

问题描述 投票:0回答:7

这是当我尝试使用 Cloud SQL 代理在 Windows 中配置对 Google Cloud SQL 的访问时出现的错误 - “listen tcp 127.0.0.1:3306:bind: An attempts was made to access a socket in a way obliged by它的访问权限。”

这是我正在使用的命令的格式“cloud_sql_proxy.exe -dir=/cloudsql -instances=my-project:us-central1:sql-instance=tcp:3306 mysql -u --主机 “ - 如文档中所述。

有人可以让我知道到底是什么原因造成的吗?

mysql sockets google-app-engine google-cloud-sql
7个回答
30
投票

SQL Server 在本地使用 3306 端口。因此,您无法在它运行时绑定它。 停止 SQL Server 以将 CloudSQL 代理绑定到它。

Windows 10 的情况:转到任务管理器 -> 服务 -> MySQL57

右键单击并停止该任务。完成后尝试再次运行相同的命令。它会工作并显示为输出

Listening on 127.0.0.1:3306 for <instance-name>

17
投票

听起来另一个进程已经在使用 3306。您可以尝试指定不同的端口吗?例如

-instances=my-project:us-central1:sql-instance=tcp:3307


1
投票

根据 google 文档 在 Windows cmd 或 google sdk shell 上使用此命令

cloud_sql_proxy.cmd -instances=<INSTANCE_CONNECTION_NAME>=tcp:3306 -credential_file=<PATH_TO_KEY_FILE>
(确保将 cloud_sql_proxy.cmd 声明为环境变量)在您的情况下

  • INSTANCE_CONNECTION_NAME =
    my-project:us-central1:sql-instance
  • PATH_TO_KEY_FILE = 在 IAM 面板中创建一个服务帐户并保存 json 文件,复制其路径并将其粘贴到此处。

如果这不起作用,请尝试将 tcp 连接到 3307,如上面的帖子中所述。


0
投票

我的情况是,我使用的 docker 映像与本地计算机上安装的相同端口相同,因此本地 mysql 不允许访问该端口,因为该端口已被使用并正在运行。我卸载了本地 mysql。现在它工作正常


0
投票

您需要 sql cloud 的令牌 你在这里生成令牌 谷歌服务令牌生成器 然后获取它将生成的令牌并将其放在这里,而 INSTANCE_CONNECTION_NAME 可以从谷歌云控制台中的 sql 实例概述页面获取

cloud_sql_proxy -token=ACCESS_TOKEN
-instances=INSTANCE_CONNECTION_NAME=tcp:PORT_NUMBER

请参阅文档了解更多详细信息 sql proxy auth 更多连接方式

对我来说它解决了 400 bad request 问题

Response: {
 "error": "invalid_grant",
  "error_description": "Bad Request"
}

注意 - 如果您使用这种方式连接,您必须在 sql 实例配置页面中允许不安全连接


0
投票

转到任务管理器 -> 服务 -> MySQL57 停止你的 Mysql 或 Postgres 实例,然后重试。它应该可以工作。


0
投票

我使用的是Windows 10

在我停止

Services Management

中的所有本地 Postgres 服务后,它就可以工作了

© www.soinside.com 2019 - 2024. All rights reserved.