Google cloud platform 如何修复google云平台计算实例上被拒绝的mysql访问

Google cloud platform 如何修复google云平台计算实例上被拒绝的mysql访问,google-cloud-platform,google-cloud-sql,Google Cloud Platform,Google Cloud Sql,为什么我的计算引擎在我的计算实例上下载了MySQL客户端并将计算实例的公共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) $mysql-h-uroot-p 输入密码:

为什么我的计算引擎在我的计算实例上下载了MySQL客户端并将计算实例的公共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)
$mysql-h-uroot-p
输入密码:
错误1045(28000):用户“XXX”的访问被拒绝@(使用密码:是)

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

1)计算引擎范围

转到计算引擎的谷歌云控制台。仔细检查计算引擎的服务帐户允许的作用域。默认情况下,不允许使用云SQL

2)服务帐户权限

检查是您分配给计算引擎的服务帐户的角色。您将需要一个云SQL角色。通常,您需要
云SQL客户端
。我前面提到的作用域用于减少而不是增加服务帐户的权限。您仍然需要向服务帐户授予正确的权限

3)谷歌云SQL数据库权限

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

  • 转到谷歌云SQL控制台
  • 转到“用户”选项卡
  • 选择您的用户名
  • 验证
    主机
    是您的公共IP地址,或者可以选择使用
    %
    表示任何主机
  • 注意:我建议使用云SQL代理访问云SQL。这是安全的,云SQL不需要IP地址


    如果您只使用外部IP和MySQL客户端连接,那么#3点应该是您的问题。但是,正如@johnhanley所建议的,建议使用云SQL代理来保护通信安全(默认情况下为隧道、SSL、无公共IP等),如果您这样做,则应考虑到#1和#2点。@guillaumeblaquiere-您是正确的。我试图提供一个更广泛的答案来帮助理解授权是如何工作的以及在哪里应用的。