小编典典

无法建立与MySQL的JDBC连接(使用Java,IntelliJ和Linux)

mysql

我在尝试使用以下代码获取数据库连接时遇到问题:

  try {
        Class.forName("com.mysql.jdbc.Driver");
        Properties p = new Properties();
        p.put("user", user_name);
        p.put("password", password);
        connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_test", p);
    } catch (SQLException ex) {
        // handle any errors
        ex.printStackTrace();
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
        return false;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();  
    }

输出的错误信息是:

/ usr / lib / jvm / java-6-openjdk / bin / java -Didea.launcher.port = 7532
-Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding =
UTF-8-类路径/usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/about.jar:/usr/lib/jvm/
java-6-openjdk / jre / lib /
resources.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/management-agent.jar:/ usr
/ lib / jvm / java-6-openjdk / jre / lib /
jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar:
/usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunjce_provider.jar:/usr/lib
/jvm/java-6-openjdk/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/dnsns.jar:/home/bedtimes/Java
Projects / db_demo / out / production / db_demo:/opt/java/jre/lib/ext/mysql-
connector-java-5.1.10-bin.jar:/usr/bin/idea/lib/idea_rt.jar
com.intellij。rt.execution.application.AppMain主要com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

成功发送到服务器的最后一个数据包是在0毫秒之前。驱动程序尚未收到来自服务器的任何数据包。在java.lang.java处sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57处)处sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)在Java.lang。
.newInstance(Constructor.java:532)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:406)位于com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)位于com.mysql.jdbc
com.mysql.jdbc.JDBC4Connection上的ConnectionImpl.createNewIO(ConnectionImpl.java:2214)(com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java:781))(JDBC4Connection.java:

成功发送到服务器的最后一个数据包是在0毫秒之前。驱动程序尚未收到来自服务器的任何数据包。在java.lang.java处sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57处)处sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)在Java.lang。
.newInstance(Constructor.java:532)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:406)位于com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)位于com.mysql.jdbc
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)上的MysqlIO。(MysqlIO.java:343)…
18个其他原因:java.net.ConnectException:java拒绝连接。

成功发送到服务器的最后一个数据包是在0毫秒之前。驱动程序尚未收到来自服务器的任何数据包。SQLState:08S01 VendorError:0

流程结束,退出代码为0

从字面上看,我不知道如何解决此错误消息。该数据库存在。用户名和密码存在。我目前尚未向数据库中添加任何表,但我认为这可能不是问题,因为我毕竟只是建立连接…

如果需要,我可以提供更多信息。我觉得我已经尝试了很多。是否有人知道如何获取有关如何以及为什么失败的更多信息?

谢谢你的帮助!:)


阅读 730

收藏
2020-05-17

共1个答案

小编典典

从您的连接字符串中,该数据库应位于本地计算机上。您可以尝试运行此命令以确保套接字已打开以进行连接吗?

远程登录127.0.0.1 3306

并确保它连接?您可能尚未将mysql实例配置为侦听来自此计算机或此接口地址的连接。如果连接失败,则需要修改mysql配置,例如:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-
database-server.html

2020-05-17