我正在尝试通过其私有IP从我的Google Cloud Compute VM连接到我的Google Cloud MySQL实例。两者都在同一个VPC中,并且看起来实际上已到达MySQL实例,但是拒绝访问并显示错误:
错误1045(28000):用户'user'@'ip-address'的访问被拒绝(使用密码:是)
我100%确定我使用了正确的用户名和密码。如果我尝试通过公共IP(使用SSL)以相同的凭据从同一VM连接到同一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仅建议您检查您的凭据,我已经验证过,因此希望这里的任何人都可以提供答案。
答案 0 :(得分:0)
执行TLS似乎也会影响专用IP连接。对我来说,这在文档中还不清楚,而且我收到的错误也无法提供很多见解。因此,我尝试使用没有客户端密钥/证书的私有IP进行连接,而确实将它们用于公共IP。
我通过使用相同的客户端证书通过专用IP进行连接来解决了这个问题。
要注意的另一件事是,禁用TLS强制实施并不能解决问题。在我的设置中,禁用TLS似乎不是一种选择,即使界面显示已禁用。我不确定为什么会这样。