mysql - 通过私有(private) IP 拒绝 Google Cloud MySQL 访问,但允许通过公共(public) IP 访问

标签 mysql google-cloud-platform google-cloud-sql

我正在尝试通过其私有(private) IP 从我的 Google Cloud Compute 虚拟机连接到我的 Google Cloud MySQL 实例。两者都在同一个 VPC 中,并且看起来确实已到达 MySQL 实例,但拒绝访问并出现错误:

ERROR 1045 (28000): Access denied for user 'user'@'ip-address' (using password: YES)

我 100% 确定我使用了正确的用户名和密码。如果我尝试通过公共(public) IP(使用 SSL)使用相同的凭据从同一个虚拟机连接到同一个 MySQL 服务器,它就可以正常工作。

我尝试连接的用户也将其主机设置为通配符(因此它是'user'@'%')。它拥有我想要使用的数据库的所有权限(尽管在指示要使用哪个表之前访问被拒绝,所以我不确定这是否相关)。 SHOW GRANTS for user; 的输出是:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'user'@'%' WITH GRANT OPTION

GRANT ALL PRIVILEGES ON `database`.* TO 'user'@'%'

Google documentation只建议检查您的凭据,我确实验证了这一点,所以我希望这里的任何人都可以提供答案。

最佳答案

强制 TLS 似乎也会影响专用 IP 连接。对我来说,文档中并不清楚这一点,而且我收到的错误也没有提供太多见解。因此,我尝试在没有客户端 key /证书的情况下使用私有(private) IP 进行连接,而我确实将它们用于公共(public) IP。

我通过使用相同的客户端证书通过私有(private) IP 进行连接解决了该问题。

另一件事需要注意的是,禁用 TLS 强制并不能解决问题。根据我的设置,禁用 TLS 似乎不是一个选项,即使界面显示它已禁用。我不确定为什么会这样。

关于mysql - 通过私有(private) IP 拒绝 Google Cloud MySQL 访问,但允许通过公共(public) IP 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58191223/

相关文章:

php - MySQL事务超时多久

mysql - 我如何简化 MySQL 中的 PRIMARY id?

ssl - FAILED_RATE_LIMITED - Google 管理的 SSL 证书

google-cloud-platform - 如何避免从 Cloud Function 到 Cloud SQL 的网络出站费用?

带有 Google Cloud SQL 和 Google Datastore 的 Android 数据库

php - mysql多JOIN查询优化

mySQL 在新创建的列上使用 where

kubernetes - 使用Kubernetes在gcloud中公开简单的应用程序

google-bigquery - 如何分别使用服务帐户和 API key 来使用 BigQuery?

spring - AppEngine + CloudSQL + hibernate : @Transactional is forbidden