Подтвердить что ты не робот

Java.sql.SQLException: Доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: YES)

Следующий код:

Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");

Выбрасывает это исключение в getConnection():

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    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:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at db.Database.<init>(Database.java:91)
    at db.Main.main(Main.java:10)

Как это вызвано и как я могу его решить?

EDIT:

    public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException 
    {

        try
        {
            Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
            Statement   s = (Statement) conn.createStatement();
            int result = s.executeUpdate("CREATE DATABASE databasename");
        }


        catch ( Exception e)
        {
            e.printStackTrace();
        }
}

Производит:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    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:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at db.Main.main(Main.java:19)
4b9b3361

Ответ 1

Как вы создаете базу данных с нуля, вы можете использовать:

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
PreparedStatement ps = connection.prepareStatement("CREATE DATABASE databasename");
int result = ps.executeUpdate();

Вот идентичный сценарий.

Ответ 2

Это может помочь вам:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

Выполните его с помощью командной строки или некоторого инструмента GUI.

Не забудьте заменить %password% на реальный пароль.

Ответ 3

вы можете использовать этот

   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost:3306/YOUR_DB_NAME";


   static final String USER = "root";
   static final String PASS = "YOUR_ROOT_PASSWORD"; 

  Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);

вы должны указать правильный пароль root.

Ответ 4

Вы должны указать db, к которому вы подключаетесь:

jdbc:mysql://localhost:3306/mydb

Ответ 5

У меня была аналогичная проблема, но разница была: я не выполнил свой JavaApp с localhost, а с удаленного ПК. Итак, я получил что-то вроде java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES) Чтобы решить эту проблему, вы можете просто войти в phpMyAdmin, перейдите в Users, нажмите add user и введите хост, из которого вы хотите выполнить JavaApp (или выберите Any Host)

Ответ 6

Попробуй вот так....

public static Connection getConnection() throws SQLException{

    String driver = "com.mysql.jdbc.Driver";
    String url    = "jdbc:mysql://localhost:3306/test";
    String username = "root";
    String password = "vicky";            // Change it to your Password
    System.setProperty(driver,"");

    return DriverManager.getConnection(url,username,password);
}

Ответ 7

Я столкнулся с той же проблемой. Добавлен номер сервисного порта mysql (3307), разрешил проблему.

conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password");

Ответ 8

Хотя это может и не быть причиной вашей проблемы, вы получите ту же ошибку, если на одном порту работают две службы MySQL. Вы можете проверить окна, просмотрев список служб на вкладке "Сервисы" диспетчера задач.

Ответ 9

У меня была такая же проблема: "java.sql.SQLException: доступ запрещен для пользователя" root "@" localhost "(с использованием пароля: YES)". Проблема была "НЕПРАВИЛЬНЫЙ ПАРОЛЬ". Скопируйте и вставьте запрос как есть в оболочке, чтобы проверить, дает ли он желаемый результат или нет. Небольшие ошибки потребляют больше времени.

Ответ 10

Это исключение также вызвано несоответствием версии mysql db и вашего pom.xml/jar.

Убедитесь, что версия pom.xml/jar выше, чем версия mysql db. Поскольку более высокие версии совместимы с более низкой версией, но то же самое не верно для обратного.

Решение для проекта java

  • Замените Jar подходящей версией.

Решение для maven на основе

  • Измените версию зависимостей в pom.xml

Решение для загрузки spring  - переопределить загрузочную зависимость spring, добавив   5.1.5.Final

Ответ 11

Мне пришлось изменить мою настройку SQL (в моем хосте, Dreamhost в моем случае), чтобы позволить пользователю получить доступ к базе данных с других хостов, а не только Dreamhost, так как я запускаю программу из среды IDE на моем компьютере. Я сделал это сейчас, добавив% к списку допустимых хостов. Теперь это работает!

Ответ 12

Я столкнулся с этой ошибкой. Проблема заключалась в том, что у меня было неправильное имя базы данных.