Mysql

無法使用 jdbc 遠端連接到 mysql 數據庫

  • September 12, 2017

我正在嘗試連接到託管在 000webhost 上的數據庫。我從 SmartFoxServer 連接,它們允許數據庫連接。您所要做的就是更改 smartfoxserver xml 文件中的一些設置。

我已經成功地使用這些設置連接到我的 localhost mysql 數據庫。

<databaseManager active="true">
   <connectionString>jdbc:mysql://localhost:3306/db_name</connectionString>
   <userName>root</userName>
   <password></password>
   <testSql>SELECT id FROM users LIMIT 1</testSql>
 </databaseManager>

但是當我嘗試連接到託管在 000webhost 上的外部數據庫時,它看起來像這樣:

在此處輸入圖像描述

使用這些設置

<connectionString>jdbc:mysql://mysql2.000webhost.com/a5939459_data</connectionString>
<userName>a5939459_user</userName>
<password>censored</password>
<testSql>SELECT id FROM users LIMIT 1</testSql>

我收到以下錯誤…

Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
Message: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driv
er has not received any packets from the server.
Description: The DBManager Test SQL failed
Please double check your SQL code and make sure that Database server is running.

編輯:

但是當我在本地主機上執行 php 文件並要求這樣的數據庫連接時,它可以工作

<?php
$db_username = "a5939459_user";
$db_name = "a5939459_data";
$db_password = "censored";
$db_host = "mysql2.000webhost.com";
mysql_connect($db_host,$db_username, $db_password, $db_name);
mysql_select_db($db_name) or die (mysql_error());
?>

為外部/Internet 連接打開數據庫/mysql 埠是一個很大的安全問題。因此,當他們創建您的數據庫時,他們很可能會分配使用者僅從有限的源 IP(主要是內部 IP)進行連接。您需要與他們的支持人員聯繫,以獲取允許您連接的源 IP 的資訊。正如 John 所提到的,mysql2.000webhost.com 解析為私有 IP 地址,這意味著您很可能被允許從其他私有 IP 連接到它,您可以通過 VPN 或其他方式連接到它。

mysql2.000webhost.com.  14189   IN      A       10.1.1.102

引用自:https://serverfault.com/questions/481542