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)
 BalusC12 авг. 2012 г., 15:03
@GagandeepBali: подумайте еще раз: если логин был неправильным, как ОП сможет получить к нему доступ через phpmyadmin?
 Tomer12 авг. 2012 г., 14:56
Вы можете подключиться с помощью клиента MySQL GUI, как SqlYog или PhpMyAdmin?
 ron12 авг. 2012 г., 14:59
@ ftom2: да, я могу получить доступphpmyadmin успешно
 nIcE cOw12 авг. 2012 г., 15:02
Вы уверены, чтоUsername иPassword так при условии, правильно? Seesm для меня нет такого пользователя, какroot :( Хотя не уверен, но вы не должны предоставлятьDatabase Name тоже какConnection con = DriverManager.getConnection("jdbc:mysql://localhost;database=mywebsitedb;user=sa;password=thatstrue;");
 nIcE cOw12 авг. 2012 г., 15:08
@BalusC: На самом деле никогда не используетсяphpmyadminхотя я использовалSQLServer иногда эти поля автоматически заполняются, и мы их забываем. Вот почему это предположение было в виде комментариев, иначе оно могло бы стать ответом, если бы я думал, что это действительно так (что может быть, а может и не быть). Хотя, так как вы обижены этим комментарием, я был бы очень неправ, спрашивая то же самое, мой плохой :-)

Ответы на вопрос(15)

jdbc:mysql://localhost:3306/mydb

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

как правило, происходит, когда имя пользователя и пароль MySQL неверны. Проверьте свое имя пользователя и пароль MySQL.

pom.xml / jar.

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

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

Replace the Jar with suitable version.

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

Change the dependency Version in pom.xml

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

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

 21 июн. 2016 г., 22:22
Это комментарий, а не ответ.

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);
}
 12 авг. 2012 г., 15:02
Почему именно это решило бы конкретную проблему? Вы не объясняете причину в любом случае.

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

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

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

 21 авг. 2017 г., 18:26
@evg Спасибо. работает сейчас!
 23 сент. 2018 г., 05:34
Не работает для меня
 11 февр. 2016 г., 06:49
Вам, вероятно, следует изменить & quot; ИДЕНТИФИЦИРОВАНЫ «корнем» & Quot; на & quot; ИДЕНТИФИЦИРУЕТСЯ «паролем» & Quot; чтобы избежать путаницы.
 05 июл. 2016 г., 23:59
@ Пранджал, ты прав. Благодарю. Я отредактировал ответ.
 24 авг. 2016 г., 12:54
@evg Я успешно выполнил этот запрос, но все еще не избавился от этой ошибки.

что у меня было неправильное имя базы данных.

доступ запрещен для пользователя" root "-" localhost ". (используя пароль: ДА) & quot ;. Проблема была "НЕПРАВИЛЬНЫЙ ПАРОЛЬ". Скопируйте и вставьте запрос «как есть» в оболочку, чтобы проверить, дает ли он желаемый результат или нет. Небольшие ошибки занимают больше времени.

Решение Вопроса

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

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

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

 ron12 авг. 2012 г., 15:16
Пожалуйста, смотрите отредактированный пост.
 12 авг. 2012 г., 15:12
Хорошо, прошу прощения, обновил с новым синтаксисом
 12 авг. 2012 г., 15:22
Вы пробовали с обновленным синтаксисом соединения?
 ron12 авг. 2012 г., 15:06
Если у меня вообще нет базы данных? и я хочу создать базу данных, используя код Java, а не вручную вphpmyadmin , затемdatabaseName не актуально?
 09 февр. 2017 г., 05:35
Я работал над одним из моих приложений, связь между кодом и базой данных была в порядке. Я начал получать эту ошибку внезапно, не знаю почему и что делать.

307), решена проблема.

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

ра с помощью Java, см. Ниже. Ошибка : "java.sql.SQLException: доступ запрещен для пользователя" xxxxx "@" 101.123.163.141 "; (используя пароль: ДА) & quot;

для удаленного доступа может быть cpanel или другие могут предоставить удаленный доступ для вашего локального IP-адреса.

В приведенном выше сообщении об ошибке: "101.123.163.141" это моя локальная машина ip. Итак, сначала мы должны предоставить удаленный доступ в Cpanel- & gt; Удаленный MySQL & # xAE ;. Затем запустите приложение для подключения.

Class.forName("com.mysql.jdbc.Driver");  
Connection con=DriverManager.getConnection(  
    "jdbc:mysql://www.xyz.com/abc","def","ghi");  
//here abc is database name, def is username and ghi        
Statement stmt=con.createStatement();  
ResultSet rs=stmt.executeQuery("select * from employee");  
    while(rs.next())  
        System.out.println(rs.getInt(1)+" "+rs.getString(2)+"  
                          "+rs.getString(3));  
con.close();    

Надеюсь, это решит вашу проблему.

Спасибо

Последовал за этимссылка на сайт Следуйте всему, начиная с этого момента:

sudo mysql_secure_installation

sudo mysql

После входа в MySQL из командной строки MySQL выполните следующие команды:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

Теперь убедитесь, что в таблице есть пароль для рута

SELECT user,authentication_string,plugin,host FROM mysql.user;

Это решило мою проблему, и теперь я могу войти.

 24 янв. 2019 г., 14:21
Это сработало для меня. Спасибо!

   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.

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

 16 нояб. 2017 г., 03:32
Я должен добавить, что это похоже на подход #munchkins, но со стороны панели управления SQL.

Ваш ответ на вопрос