2012-08-17 119 views
1

我試圖向我虛擬機中託管的MySQL數據庫發送請求,但它對我來說不起作用 。連接到Java虛擬機中託管的MYSQL數據庫

這裏是我的設置:

  • 最新的Ubuntu服務器魔女的Apache2 MySQL的安裝,並正在
  • 數據庫「反饋」用表「測試」建立和充滿試驗數據
  • 網絡適配器已橋接。服務器的IP是(如果我輸入ifconfig)10.0.0.1,我的電腦的IP是10.0.0.4。
  • 手動打開端口3306。罐子的mysql連接器java的5.1.21-bin.jar是引用Libary

這裏是Java代碼:

import java.sql.*; 

public class Main { 

    public static void main(String[] args) { 

    try { 

     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     System.out.println("Sucess"); 
     Connection con = DriverManager.getConnection("jdbc:mysql://10.0.0.1/feedback","root","myrootpassword"); 

     con.setReadOnly(true); 



    } catch (Exception e) { 


     System.err.print("NO CONNECTION"); 
    } 

    } 
} 

我希望有人能夠幫助這一點,因爲我的工作這個問題有一段時間了。

感謝

+0

這個例外是什麼意思? – tdammers 2012-08-17 12:28:41

+1

忽略System.out.println(「成功」); – w4beda 2012-08-17 12:29:15

+0

有沒有例外 – w4beda 2012-08-17 12:29:39

回答

2

只有兩個想法:

  • 是MySQL的配置爲偵聽所有地址,而不僅僅是本地的嗎? bind-address配置指令的價值是什麼? 0.0.0.0表示「偵聽所有接口」,而127.0.0.1表示「偵聽本地主機接口,僅用於從該主機訪問」。
  • 也許你可以在你的catch語句中提取關於這個問題的一些細節?

希望這有助於!

+0

請給我一個提示如何配置它在這裏監聽所有接口的mysql服務器ouptput:成功發送到服務器的最後一個數據包是0毫秒前。驅動程序尚未收到來自服務器的任何數據包。 \t在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法) \t在sun.reflect.NativeConstructorAccessorImpl.newInstance(來源不明) \t在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(來源不明) \t在java.lang.reflect中.Constructor.newInstance(Unknown Source) \t at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) – w4beda 2012-08-17 12:38:21

+0

我仍然不知道它是否是問題,但爲了讓它偵聽correclty,請編輯/ etc/mysql/my.cnf,確保沒有'skip-networking'這一行(或者前面註釋了一個破折號字符),並且有一個(沒有註釋的)'bind-address = 0.0.0.0'行。如果你做了任何編輯,請用'sudo /etc/init.d/mysql restart'重新啓動mysql。 – niconoe 2012-08-17 12:43:30

+0

有以下部分:「現在,默認情況下,只是在本地主機上偵聽,而不是跳過網絡,而這種本地主機更加兼容並且不安全。」綁定地址127.0.0.1。我應該將其更改爲0.0.0.0嗎?如果只是這種變化,它不能解決問題。 – w4beda 2012-08-17 12:56:01

1

如果我理解正確的問題,要連接VM數據庫,然後檢查以下步驟

1.jdbc:mysql的://10.0.0.1/feedback。

2.確保沒有防火牆阻止訪問端口3306

3.確保你與被允許從該特定的主機連接連接用戶。

+0

如果我以root身份登錄,我必須授予權限嗎? – w4beda 2012-08-17 12:50:30

+0

即使您以root身份登錄,也一定要在您的MySQL模式中向該主機和用戶授予適當的權限。 – Ami 2012-08-17 13:00:22

+0

我以爲root擁有所有權限,但我錯了。謝謝你們,你是偉大的:) – w4beda 2012-08-17 13:04:51