title: Can't connect to MySQL from Java: NullPointerException inside MySQL driver connection logic
body: <p>I'm trying to connect to a database I created with MySQL in my Java program, but it always fails.</p>
  
  <p>For the sake of example, here is my code:</p>
  
  <pre><code>import java.sql.*;
  
  public class Squirrel {
      public static void main(String[] args) {
          String user;
          String password;
          Connection connection;
          Statement statement;
          try {
              Class.forName("com.mysql.jdbc.Driver");
  
              connection = DriverManager.getConnection(
                  "jdbc:mysql://localhost:3306", user, password);
  
              statement = connection.createStatement();
  
              // Other code
          } catch (ClassNotFoundException | SQLException e) {
              e.printStackTrace();
          } finally {
              try {
                  if (statement != null) {
                      statement.close();
                  }
                  if (connection != null) {
                      connection.close();
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              }
          }
      }
  }
  </code></pre>
  
  <p>I am able to connect to the database from within IntelliJ and have added the <code>mysql-connector-java-5.1.40.jar</code> added to the project, but each time I run the program <code>DriverManager.getConnection()</code> throws this:</p>
  
  <pre><code>com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
      at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
      at com.mysql.jdbc.Util.getInstance(Util.java:408)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
      at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2330)
      at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
      at com.mysql.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:806)
      at com.mysql.jdbc.JDBC4Connection.&lt;init&gt;(JDBC4Connection.java:47)
      at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
      at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
      at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
      at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
      at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
      at Squirrel.main(Squirrel.java:12)
  Caused by: java.lang.NullPointerException
      at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997)
      at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1934)
      at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1863)
      at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
      at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
      at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
  ... 13 more
  </code></pre>