【问题标题】:How to fix mysql access denied on google-cloud-platform compute instance如何修复 google-cloud-platform 计算实例上的 mysql 访问被拒绝
【发布时间】:2019-10-12 17:20:49
【问题描述】:

为什么我在计算实例上下载 MySQL-client 并将计算实例的公共 IP 添加到 CloudSQL 授权连接后,我的计算引擎无法使用公共 IP 连接 MySQL?

$ mysql -h <cloud-sql-host> -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'XXX'@<cloud_sql_host> (using password: YES)

【问题讨论】:

    标签: google-cloud-platform google-cloud-sql


    【解决方案1】:

    您必须设置几个区域才能授予访问权限。

    1) 计算引擎范围

    转到 Compute Engine 的 Google Cloud Console。仔细检查 Compute Engine 服务帐号允许的范围。默认情况下不允许使用 Cloud SQL。

    2) 服务帐号权限

    Check 是您分配给分配给 Compute Engine 的服务帐号的角色。您将需要其中一个 Cloud SQL 角色。通常,您需要Cloud SQL Client。我之前提到的范围用于减少而不是增加服务帐户的权限。您仍然需要为服务帐号授予正确的权限。

    https://cloud.google.com/sql/docs/mysql/connect-external-app

    3) Google Cloud SQL 数据库权限

    验证您的 MySQL 登录是否已被“授予”登录权限。

    1. 转到 Google Cloud SQL 控制台。
    2. 转到“用户”选项卡。
    3. 选择您的用户名。
    4. 验证 host 是您的公共 IP 地址,或者可以选择使用 % 来表示任何主机。

    注意:我建议使用 Cloud SQL 代理访问 Cloud SQL。这是安全的,Cloud SQL 不需要 IP 地址。

    Cloud SQL Proxy

    【讨论】:

    • 如果你只使用外部 IP 和 MySQL 客户端连接,#3 点应该是你的问题。但是,正如@johnhanley 所建议的那样,建议使用 Cloud SQL 代理来保护通信(隧道、SSL 默认情况下、没有公共 IP,...),如果您这样做,则需要考虑 #1 和 #2 点。
    • @guillaumeblaquiere - 你是对的。我试图提供更广泛的答案,以帮助理解授权的工作原理和应用位置。
    猜你喜欢
    • 2016-12-10
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2018-04-23
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多