我在Google Cloud的同一项目中有Cloud SQL
和Instance
。
我想使用命令行从实例连接到Mysql(从Google Cloud SQL)。
我正在使用命令进行连接:
gcloud sql connect cloud-sql-name --user=username
给予:
ERROR: (gcloud.sql.connect) There was no instance found or you are not authorized to connect to it.
如何建立连接。
答案 0 :(得分:1)
您可能错过了authorization of your instance's IP才能连接到Cloud SQL数据库。这是为例如通过Cloud SQL实例页面中的Cloud Console。
要查看有关从Compute Engine实例连接到Cloud SQL(使用mysql客户端)的分步指南,请选中this docs page。
答案 1 :(得分:1)
您是否要从Compute Engine VM实例连接到Cloud SQL实例?
在这种情况下,我建议您首先为您的服务帐户(Compute Engine默认服务帐户或新帐户)授予Cloud SQL [1]的相应IAM角色/权限。
然后,在VM实例命令行中验证/激活[2]您的服务帐户(建议为您的服务帐户生成JSON密钥文件而不是P12密钥文件):
~$ gcloud auth activate-service-account [ACCOUNT] --key-file=KEY_FILE
要为您的服务帐户生成密钥文件,可以进入“产品和服务”菜单>“ IAM和管理员”>“服务帐户”。单击相应服务帐户右侧的三点按钮,然后选择“创建密钥”。
您的密钥文件应存储/上传到您的VM实例,以便它可以使用它来激活服务帐户。
可能还需要在其Cloud API访问范围面板中授予您的VM实例对Cloud SQL的访问权限。转到产品和服务菜单> Compute Engine> VM实例。选择您的VM实例并进行编辑。
请注意,在编辑Cloud API访问范围之前,您需要先停止VM实例。转到“访问范围”>“为每个API设置访问权限”。启用并保存。
您还必须启用Cloud SQL Admin API。转到产品和服务菜单> API和服务。搜索并启用SQL Admin(等待几分钟)
启动VM实例并尝试进行Cloud SQL测试(必要时重新激活服务帐户)。
您的MySQL的Cloud SQL实例创建“ root”用户。只需确保使用它作为用户名或您创建的其他任何用户名即可。
请注意,由于您将从Compute Engine VM实例进行连接,因此可能会要求您提供MySQL客户端。
[1] https://cloud.google.com/sql/docs/mysql/project-access-control
[2] https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account