Mysql
無法使用 jdbc 遠端連接到 mysql 數據庫
我正在嘗試連接到託管在 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