我有一個奇怪的問題連接到公共託管的靜態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