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

oli*_*ive 5 java mysql linux jar jdbc

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

  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();  
    }
Run Code Online (Sandbox Code Playgroud)

输出的错误消息是:

/ usr/lib/jvm/java-6-openjdk/bin/java -Didea.launcher.port = 7532 -Didea.launcher.bin.path =/usr/bin/idea/bin -Dfile.encoding = UTF-8 - classpath /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 Main com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

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

成功发送到服务器的最后一个数据包是0毫秒前.驱动程序未收到来自服务器的任何数据包.at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor .newInstance(Constructor.java:532)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:406)的com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)com.mysql.jdbc. MysqlIO.(MysqlIO.java:343)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)... 18更多引起:java.net.ConnectException:连接在java中被拒绝.

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

进程以退出代码0结束

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

如果需要,我可以提供额外的信息.我觉得我已经尝试了很多.有没有人知道如何获得有关它失败的方式和原因的进一步信息?

谢谢你的帮助!:)

小智 6

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

telnet 127.0.0.1 3306

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

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