Почему не происходит подключение к MySql с помощью JDBC?

218
31 мая 2018, 07:10

День добрый. Я пытаюсь через Intelij Idea подключиться к бд MySql, но выдает только огромную тучу красного текста на консоль. Поиски в инете ничего не дали. Изюминка в том, что у меня 32-битная винда, а стандартный сервер mysql поддерживает только 64-битную ОС, но я вроде как скачал с офф сайта модифицированную версию на 32-бит. Может это как-то повлияло. Еще версия сервера 5.1.45, а MySql Workbench - 6.1.7

import java.sql.*;
public class Main {
public static void main(String[] arg){
    final String db_url="jdbc:mysql://localhost:3306/test1?useSSL=false";
    final String db_user="root";
    final String db_password="1234";
    final String db_driver="com.mysql.cj.jdbc.Driver";
    try{
        Class.forName(db_driver);
    } catch(ClassNotFoundException e){
        e.printStackTrace();
    }
    try(Connection conn = DriverManager.getConnection(db_url, db_user, db_password)){
        Statement st = conn.createStatement();
        st.execute("select * from a");
        ResultSet rs = st.getResultSet();
        while(rs.next()){
            System.out.println(rs.getString(2));
        }
        System.out.println("Prepared statement");
        PreparedStatement ps = conn.prepareStatement("select * from a where a.key = ?");
        ps.setInt(1, 1);
        rs = ps.getResultSet();
        ps.executeQuery();
        while(rs.next()){
        }
    } catch(SQLException e){
        e.printStackTrace();
    }
}

}

На подключении в последнем try выдает исключение:

    java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:79)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at Module_3.Labs.Labs_3.Main.main(Main.java:16)
Caused by: com.mysql.cj.exceptions.UnableToConnectException: CLIENT_PLUGIN_AUTH is required
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:83)
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:220)
    at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1411)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:165)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:982)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)
    ... 6 more
Answer 1

На вашем сервере установлен способ аутентификации, который вы не соблюдаете.

Почитайте документацию

Если не хотите заморачиваться возьмите старую версию драйвера, которая поддерживает текстовую авторизацию - вам нужен пакет

com.mysql.jdbc.Driver
READ ALSO
игровое поле шире экрана android studio

игровое поле шире экрана android studio

Подскажите, как сделать игровое поле шире экрана устройства? Чтобы можно было сдвигать, например комнату, видеть и взаимодействовать с объектами...

201
Как скачать файл из интернета Java

Как скачать файл из интернета Java

Имеется ссылка вида https://

183
Повторный ввод логина и пароля при запуске приложения. Tomcat

Повторный ввод логина и пароля при запуске приложения. Tomcat

В моем тестовом приложении настроена аутентификация через фильтрыПри первом запуске программы, нужно вводить дважды логин и пароль, потому...

244