我有一个奇怪的问题连接到公共托管的静态IP mysql服务器。到远程MySQL DB的JDBC连接失败;
我可以通过MySQL Workbench成功连接服务器,也可以通过SSH连接到本地远程服务器。但是,从jdbc连接器连接到MySQL服务器的尝试(通过NetBeans和通过本地部署的代码均失败)。在查看日志时,考虑到用户凭证是本地用户而不是远程用户,代码正试图与远程服务器连接。所以用户存在于远程,但在尝试连接时,java会考虑user @ localhost。
造成的:java.sql.SQLException中:如出现确切的错误访问被拒绝的用户 'user'@'c-24-130-52-20.hsd1.ca.comcast.net '(使用密码:是) 在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) 〜[MySQL的连接器的Java-5.1.27.jar:NA]在 com.mysql。 jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237) 〜[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169) 〜[ mysql-connector-java-5.1.27.jar:na]在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:928) 〜[mysql-connector-java-5.1.27.jar:na] at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java: 1750) 〜[MySQL的连接器的Java-5.1.27.jar:NA]
我的连接字符串是:
JDBC:MySQL的://用户:密码@ WXYZ/
有人可以请建议如何提及用户,使Java认为它是一个远程用户,而不是我的机器上的本地用户?
我认为错误中的地址表示*您的*机器,而不是它正在尝试连接的机器。 “用户”之后的标识符标识谁正尝试连接。你确定所有远程机器都可以连接到该服务器吗? – RealSkeptic
哦,是的,你说得对。一开始我就不明白这一点是愚蠢的。感谢您指出。是的,我确保通过将bindaddress设置为0.0.0.0,可以从外部对每个人进行远程访问。我会编辑这个问题来解决这个简洁的小问题。谢谢。 – user1242321
但是现在我很好奇如何在连接字符串中提到远程机器的本地用户?我认为用户默认会被认为是远程服务器上的用户,如[email protected]而不是当前的方式。我的宽带上没有静态IP,因此在远程服务器上授予本地用户访问权限也不起作用。 – user1242321