title: "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure" to remote database
body: <p>I tried to connect to my remote MySQL database, but I failed and got this error.</p>
  
  <pre><code>com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
  </code></pre>
  
  <p>The confusion is that It was effective when I used MySQL-Front tool to connect the remote database, and I can ping to the IP address successfully. but when I used my code, it wound show the error after about ten seconds. </p>
  
  <p>Also when I used the wrong username or password in my code, it wound show the wrong verification immediately. Did that prove it is no problem to set up conection?</p>
  
  <p>Here is my code(It can work on my localhost database):  </p>
  
  <pre><code>public static void main(String[] args) {
          String url = "jdbc:mysql://(IP address):3306/";
          String dbName = "talk";
          String driver = "com.mysql.jdbc.Driver";
          String userName = "talkroot";
          String password = "123456";
          try {
              Class.forName(driver).newInstance();
              Connection conn = DriverManager.getConnection(url + dbName,
                      userName, password);
              System.out.println("connect");
              conn.close();
          } catch (Exception e) {
              e.printStackTrace();
          }
          System.out.println("end");
      }
  </code></pre>
  
  <p>Here is the error:</p>
  
  <pre><code>com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
  
  Last packet sent to the server was 0 ms ago.
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
      at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
      at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
      at com.mysql.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:723)
      at com.mysql.jdbc.JDBC4Connection.&lt;init&gt;(JDBC4Connection.java:46)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
      at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
      at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
      at java.sql.DriverManager.getConnection(Unknown Source)
      at java.sql.DriverManager.getConnection(Unknown Source)
      at com.test.TestMySQL.main(TestMySQL.java:16)
  Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
  
  Last packet sent to the server was 21298 ms ago.
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
      at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
      at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3009)
      at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2895)
      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3438)
      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
      at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
      at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1802)
      at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3444)
      at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2062)
      ... 12 more
  Caused by: java.net.SocketException: Software caused connection abort: recv failed
      at java.net.SocketInputStream.socketRead0(Native Method)
      at java.net.SocketInputStream.read(Unknown Source)
      at java.net.SocketInputStream.read(Unknown Source)
      at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
      at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
      at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
      at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2452)
      at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2906)
      ... 20 more
  </code></pre>
  
  <p>Anyone can help me please?</p>