从java连接到MySql时发生异常

从java连接到MySql时发生异常,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试使用Java代码连接到WAMP服务器中的MySql数据库。服务器位于本地网络内的计算机中。以下是我使用的代码: public class MySQLAccess { public static void main(String args[]) { String url = "jdbc:mysql://192.168.0.21:3306/"; String dbName = "mydb"; String driver = "com.mysql.jd

我正在尝试使用Java代码连接到WAMP服务器中的MySql数据库。服务器位于本地网络内的计算机中。以下是我使用的代码:

public class MySQLAccess {

public static void main(String args[]) {

      String url = "jdbc:mysql://192.168.0.21:3306/";
      String dbName = "mydb";
      String driver = "com.mysql.jdbc.Driver";
      String userName = "root"; 
      String password = "";
      try {
      Class.forName(driver).newInstance();
      Connection conn = DriverManager.getConnection(url+dbName,userName,password);
      System.out.println("Connected to the database");
      conn.close();
      System.out.println("Disconnected from database");
      } catch (Exception e) {
      e.printStackTrace();
      }
我得到以下例外情况:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection timed out

STACKTRACE:

java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:209)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at MySQLAccess.main(MySQLAccess.java:24)


** END NESTED EXCEPTION **



    Last packet sent to the server was 1 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at MySQLAccess.main(MySQLAccess.java:24)
com.mysql.jdbc.CommunicationsException:由于底层异常导致的通信链路故障:
**开始嵌套异常**
java.net.ConnectException
消息:连接超时
堆栈跟踪:
java.net.ConnectException:连接超时
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:366)
位于java.net.Socket.connect(Socket.java:519)
位于java.net.Socket.connect(Socket.java:469)
位于java.net.Socket(Socket.java:366)
位于java.net.Socket(Socket.java:209)
位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
在com.mysql.jdbc.MysqlIO上(MysqlIO.java:271)
在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2771)
位于com.mysql.jdbc.Connection(Connection.java:1555)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
位于java.sql.DriverManager.getConnection(DriverManager.java:582)
位于java.sql.DriverManager.getConnection(DriverManager.java:185)
位于MySQLAccess.main(MySQLAccess.java:24)
**结束嵌套异常**
发送到服务器的最后一个数据包是1毫秒前。
位于com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
位于com.mysql.jdbc.Connection(Connection.java:1555)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
位于java.sql.DriverManager.getConnection(DriverManager.java:582)
位于java.sql.DriverManager.getConnection(DriverManager.java:185)
位于MySQLAccess.main(MySQLAccess.java:24)
我在这段代码中看不到任何明显的东西会导致这个异常。此外,我已再次确认端口号是正确的,主机没有任何防火墙


这个问题的原因是什么?解决方案是什么。非常感谢任何melp。

1.检查您的mysql是否在特定主机和端口上运行

2.尝试从代码运行的计算机ping该主机以确保连接(防火墙??)


3.如果您有db ui或其他东西,请尝试使用该接口连接

您是否能够从您的机器ping您的db server机器?您的mysql服务器是否配置为接受远程连接?这似乎是一个简单的连接错误。尝试使用其他mysql客户机从运行代码的同一台机器连接到mysql服务器。您必须首先排除任何连接问题。@MayankSharma-我可以ping您是否有权访问数据库服务器@用户1400538