我正在努力琢磨着我的頭腦。 這個簡單的一行代碼:無論主機名如何,JDBC都會嘗試連接到「本地主機」
DriverManager.getConnection("jdbc:mysql://machine1:3306/information_schema", "user1", "password");
運行machine1上導致錯誤:
1045 Access denied for user 'user1'@'localhost' (using password: YES)
但是有上machine2
運行還是沒有問題的任何其他機器爲這一問題。
user1
實際上有兩個不同的密碼,一個是password
如果連接到machine1
製成(這是機器名),一種是password1
如果連接到localhost
製成。
聽起來很瘋狂,但我們的IT部門堅持認爲這是出於安全目的。因此,如果您可以忽略這種瘋狂,問題很明顯:我要求JDBC使用用戶名user1
和密碼password
連接到machine1
,這是正確的,但它以某種方式嘗試連接到localhost
並因此發生錯誤。
我懷疑在machine1
,有某種配置委託從machine1
到localhost
的所有內部連接。這就是爲什麼只有當我從machine1
運行該命令時纔會出現錯誤,並且如果從別處運行該命令,則不會發生此錯誤。
修改代碼連接到localhost
將工作,但框架不允許我這樣做。
有什麼想法?
也許將用戶名設置爲user1 @ machine1? – Chet
@GordThompson是的,'localhost'一切都很好。 –