除非localhost

时间:2016-01-22 10:38:48

标签: java mysql

如果代码是:

,我可以连接到MySQL
conn = DriverManager.getConnection(
                "jdbc:mysql://localhost/db","root", "test");

但是一旦我将其更改为其中一个(首先是我的IP地址)

conn = DriverManager.getConnection(
                "jdbc:mysql://82.41.85.161/db","root", "test");

conn = DriverManager.getConnection(
                "jdbc:mysql://127.0.01/db","root", "test");

事情需要一段时间才会发生,所有确实发生的事情都是缺乏联系。

SQLException: Communications link failure

我尝试更改CNF文件中的绑定地址并添加"#"在它面前但没有任何反应。我目前正在纯粹在" MySQLWorkbench"这里的最终目标是实际从另一台计算机连接到这个数据库。任何帮助将非常感激。

4 个答案:

答案 0 :(得分:1)

您需要确保将MySQL设置为允许远程连接,并确保您的端口可访问。也可以允许/禁止数据库中的用户从外部访问。

答案 1 :(得分:1)

127.0.01

无效。它应该是

127.0.0.1

如果localhost工作正常,127.0.0.1通常没有任何理由不起作用。

就另一个问题而言,我确定你的公共接口不允许mysql端口访问。

答案 2 :(得分:1)

你在这里忘记了一个点:

conn = DriverManager.getConnection(
                "jdbc:mysql://127.0.01/db","root", "test");

你应该尝试这个:

conn = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1/db","root", "test");

答案 3 :(得分:0)

首先,在连接到环回地址时设置地址时输入错误。它应该是127.0.0.1而不是127.0.01

conn = DriverManager.getConnection("jdbc:mysql://127.0.01/db","root", "test");

其次,出于安全原因,默认情况下禁用对MySQL数据库服务器的远程访问。您必须告诉服务器将自己绑定到给定的IP地址并侦听连接。

为此,您必须编辑my.cnf文件,您可以在以下某个位置找到该文件:

/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
[datadir]/my.cnf
~/.my.cnf

或者,您可以使用find找到要编辑的文件:

$ find / -iname "my.cnf" -print 2>/dev/null
/etc/mysql/my.cnf

然后编辑my.cnf并添加以下内容:

bind-address    = 82.41.85.161

请确保使用#之前对skip-networking行进行评论:#skip-networking

使用iptables -L -n | grep :PORT验证防火墙是否阻止了端口3306上的连接。

最后用/etc/init.d/mysql restart重新启动mysql。