无法使用jdbc远程连接mysql数据库

无法使用jdbc远程连接mysql数据库

我正在尝试连接到托管在 000webhost 上的数据库。我从 SmartFoxServer 进行连接,它们允许数据库连接。您所要做的就是更改 smartfoxserver xml 文件中的某些设置。

我已成功使用这些设置连接到我的本地主机 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());
?>

答案1

打开数据库/mysql 端口用于外部/Internet 连接是一个很大的安全问题。因此,当他们创建您的数据库时,他们很可能会指定一个用户仅从有限的源 IP(主要是内部 IP)进行连接。您需要与他们的支持人员沟通,以获取允许您从哪些源 IP 进行连接的信息。正如 John 提到的,mysql2.000webhost.com 解析为私有 IP 地址,这意味着您很可能被允许从其他私有 IP 连接到它,您可以通过 VPN 或其他方式连接到该 IP。

mysql2.000webhost.com.  14189   IN      A       10.1.1.102

答案2

他们给您的 MySQL 主机有一个 10. IP 地址,在互联网上无法路由。您只能从他们提供的 Web 主机连接到该主机,而不能从其他主机连接到该主机。

答案3

正如其他人所指出的,问题确实是 000webhost 不允许远程连接到 mysql 数据库。

http://www.freesqldatabase.com/

最终我将其用于我的 mysql 数据库。它是免费的。它实际上非常可靠且快速。允许免费远程连接。有 phpMyAdmin。

虽然不确定其安全性,但除此之外,这是一个很好的选择。

相关内容