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

我有问题尝试使用下面的代码获取数据库连接:

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 – 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项目/ 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毫秒前。 驱动程序尚未收到来自服务器的任何数据包。 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)at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)at com.mysql.jdbc。 Connection.mpl.createNewIO(ConnectionImpl.java:2214)at com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.java:781)at com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:46)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:53 2)at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :284)at java.sql.DriverManager.getConnection(DriverManager.java:620)at java.sql.DriverManager.getConnection(DriverManager.java:169)at database.Database.connect(Database.java:80)at Main.main (Main.java:13)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:616)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)由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)at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)at com.mysql.jdbc。 MysqlIO。(MysqlIO.java:343)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)… 18更多原因:java.net.ConnectException:连接在java.net.PlainSocketImpl.socketConnect处被拒绝(本地方法)在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)at java.net.SocksSocketImpl.connect(袜子 (Socket.java:384)at java.net.Socket.connect(Socket.java:492)at java.net.Socket。(Socket.java:389)在java.net.Socket.connect(Socket.java:542)在java.net.Socket。(Socket.java:232)在com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)在com.mysql.jdbc.MysqlIO。(MysqlIO.java:292)…另外19个SQLException:通信链路故障

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

进程使用退出码0结束

我从字面上不知道如何解决这个错误信息。 数据库存在。 用户名和密码存在。 我目前没有添加任何表到数据库,但我不认为这可能是问题,因为我只是做连接毕竟…

如果需要,我可以提供额外的信息。 我觉得我已经尝试了很多。 有没有人知道如何以及为什么失败的进一步信息的任何方法?

谢谢你的帮助! 🙂

Solutions Collecting From Web of "无法build立与MySQL的JDBC连接(使用Java,IntelliJ和Linux)"

从你的连接字符串,这个数据库应该在本地机器上。 你能尝试运行这个命令来确保套接字是打开的连接吗?

telnet 127.0.0.1 3306

并确保它连接? 你可能没有配置你的mysql实例来监听来自这台机器或这个接口地址的连接。 如果连接失败,你需要修改你的mysql配置,例如:

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

我有相同的症状,但对我来说,解决的办法是将绑定地址更改为/etc/mysql/my.cnf中的0.0.0.0

(只是发布这个寻求这个问题的答案的其他人)

你可以试试这个:

 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_test","user_name","password"); 

你可以尝试下面的一个

 "jdbc:mysql://localhost:3306/jsp_test","username","password" 

要么

 "jdbc:mysql://'your machines ip (without quote)':3306/jsp_test","username","password" 

要么

 "jdbc:mysql://127.0.0.1:3306/jsp_test","username","password" 

作为连接字符串。