Не удается подключиться к MySql

0

Я пытаюсь подключиться к серверу MySQL, но появляются ошибки, с которыми я не могу справиться.

java.sql.SQLNonTransientConnectionException: Не удалось создать соединение с сервером базы данных. Попытка повторного подключения 3 раза. Сдаваться. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) в com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) на com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) в com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) в com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java: 73) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:902) в com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:827) на com.mysql.cj. jdbc.ConnectionImpl. (ConnectionImpl.java:456) в com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) в com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207) в java.sql.DriverManager.getConnection(DriverManager.java:664) в java.sql.DriverManager.getConnection(DriverManager.java:247) в Main.main(Main.java:21) Вызывается: com.mysql.cj.exceptions.CJException: Доступ запрещен для пользователя 'chechevica' @' % 'для базы данных "народы" на sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) на sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) на sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance(Constructor.java:423) в com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) в com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory. java: 105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) в com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:129) в com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:810) в com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:735) в com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java: 703) at com.mysql.cj.protocol.a.Native Protocol.checkErrorMessage(NativeProtocol.java:132) в com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:557) в com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java: 220) на com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1443) на com.mysql.cj.NativeSession.connect(NativeSession.java:165) на com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:846)... еще 7 Исключение в потоке "main" java.lang.NullPointerException at Main.main(Main.java:39)

Код:

import java.sql.*;

public class Main {

    // JDBC URL, username and password of MySQL server
    private static final String url = "jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false";
    private static final String user = "chechevica";
    private static final String password = "**ur_SQLparol**";

    // JDBC variables for opening and managing connection
    private static Connection connection;
    private static Statement statement;
    private static ResultSet resultSet;

    public static void main(String[] args) {
        String query = "SELECT id_user FROM users";

        try {
            // opening database connection to MySQL server
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection(url, user, password);

            // getting Statement object to execute query
            statement = connection.createStatement();

            // executing SELECT query
            resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int count = resultSet.getInt(1);
                System.out.println("Total number of users in the table : " + count);
            }
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            //close connection ,stmt and resultSet here
            try { connection.close(); } catch(SQLException se) { /*can't do anything */ }
            try { statement.close(); } catch(SQLException se) { /*can't do anything */ }
            try { resultSet.close(); } catch(SQLException se) { /*can't do anything */ }
        }
    }
}
  • 0
    У тебя есть phpmyadmin?
  • 0
    Нет, почему?
Показать ещё 8 комментариев
Теги:

1 ответ

0

Основной причиной здесь является то, что пользователь chechevica не имеет доступа к людям DB:

Caused by: com.mysql.cj.exceptions.CJException: Access denied for user 'chechevica'@'%' to database 'peoples' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 

Вам просто нужно предоставить доступ к этому пользователю для решения вашей проблемы, что-то вроде этого будет работать:

GRANT ALL PRIVILEGES ON peoples.* TO 'chechevica'@'%';

Для получения дополнительной информации о предоставлении в MySQL будет полезно прочитать это >>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню