我正在尝试使用mysql
程序中的jdbc
连接到java
数据库。我使用RHEL 6机器连接到mysql数据库。我在这台机器上打开了端口3306,如果我这样做,mysql -u root -p
mysql数据库连接。
如果我这样做,mysql -h servername.edu -u root -p
mysql数据库连接。
从我的java程序,
String url = "jdbc:mysql://localhost:3306/";
作品。
现在,如果我将localhost更改为servername,它将不起作用。
String url = "jdbc:mysql://server.com:3306/";
我收到错误,
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure to remote databse
在发布问题之前,我对来自here的此例外进行了一些研究。
我已正确设置my.cnf
文件,但我没有在该文件中看到问题。我在这里错过了什么?服务器的正常ping
也可以正常工作。
答案 0 :(得分:0)
CommunicationsException:通讯链接失败
您可以看到此answer,其中还包含有关您的问题的良好教程:
如果出现SQLException:连接被拒绝或连接超时 或MySQL特定的CommunicationsException:通信链接 失败,那就意味着数据库根本无法访问。这个可以 有以下一个或多个原因:
- JDBC URL中的IP地址或主机名错误。
- 本地DNS服务器无法识别JDBC URL中的主机名。
- JDBC URL中缺少或错误端口号。
- 数据库服务器已关闭。
- 数据库服务器不接受TCP / IP连接。
- 数据库服务器已用完连接。
- Java和DB之间的某些东西阻止了连接,例如防火墙或代理。
醇>要解决其中一个问题,请遵循以下建议:
- 使用ping验证并测试它们。
- 刷新DNS或在JDBC URL中使用IP地址。
- 根据MySQL DB的my.cnf进行验证。
- 启动数据库。
- 验证mysqld是否在没有--skip-networking选项的情况下启动。
- 重新启动数据库并相应地修改代码,以便最终关闭连接。
- 禁用防火墙和/或配置防火墙/代理以允许/转发端口
醇>