2015-12-15 159 views
-1

我有一臺運行在bluehost機器上的數據庫服務器,並且我正在爲自己提供遠程IP訪問(通過我的IP地址)。用於MySQL連接的JDBC:適用於MySQL Workbench,不適用於JDBC

在我的客戶端機器上,我有MySQL Workbench,並且有一些Java代碼。 MySQL工作臺正在獲取連接,使用我希望的數據庫。通過驅動程序管理器連接,我無法指定我的數據庫,例如在URL中的端口號之後使用正斜槓,否則會出現連接錯誤。

我可以使用Workbench或驅動程序管理器獲得具有相同用戶標識和密碼的連接,但使用JDBC它不想讓我訪問相同的數據庫。

當我嘗試執行此(JDBC): "use database",我得到:

拒絕訪問用戶userid'@'184.11.22.%'數據庫 '數據庫'

的URL我現在用的就是

jdbc:mysql://(server-ip):(port) 

如果我嘗試到它給人的訪問衝突的URL追加一個「/(數據庫)」。 MySQL Workbench沒有獲得任何其他特殊信息,但似乎與指定的默認模式連接。同一臺客戶機;相同的用戶名和密碼。 JDBC連接出了什麼問題?

Java代碼中添加:

db = DriverManager.getConnection(
     "jdbc:mysql://74.220.192.113/advanfc7_atm?" + 
     "user=(myuserid&password=(mypwd)"); 
    System.out.println("Connected."); 
    statement = db.createStatement(); 
    statement.execute("use advanfc7_atm"); 
} catch (Exception e) { 
    System.out.println("InitDB() "+e.getMessage()); 

}

我也有3個參數做它的getConnection(),在第二和第三PARAMS分離用戶名和密碼。

+0

,你指定的任何方式的用戶名和密碼?請顯示您正在使用的java代碼來嘗試連接到db –

+0

我在上面添加了一個代碼片段。我總是指定userid和password,並且我在Workbench和Java中都使用相同的userid。 –

+0

有了這兩個選項,你會得到「訪問被拒絕」消息嗎?如果是這樣,請在MySQL Workbench(或MySQL CLI)上檢查用戶可以使用的主機:'從mysql.user中選擇不同的主機,其中User ='myuserid''(您需要使用MySQL的'root'用戶運行此查詢) – Barranka

回答

1

。在你的getConnection一小段代碼語法錯誤:

db = DriverManager.getConnection(
     "jdbc:mysql://74.220.192.113/advanfc7_atm?" + 
     "user=(myuserid&password=(mypwd)"); 

注意,在user=(myuserid右括號丟失。它應該是user=(myuserid)

相反:
由於每個司機都有不同的URL語法,這是通常使用更安全的DriverManager.getConnection(String url, String user, String password)方法來代替。

用法示例:

db = DriverManager.getConnection(
     "jdbc:mysql://74.220.192.113/advanfc7_atm", 
     "myuserid", 
     "mypwd"); 
當您試圖訪問使用JDBC的數據庫
+0

對不起。這是編輯語法中的語法錯誤。我爲usierid和密碼添加了括號,並將其放在這裏。我也使用了兩個簽名;一個或三個參數。 –

+0

好吧,所以這與你如何輸入問題有關。您是否嘗試使用'getConnection(url,username,password)'方法? –

+0

原來我也是如何鍵入數據庫名稱的。我在其中轉換了兩個字符,這導致了我的問題。 –