Вопрос по jdbc, mysql, connection, java, exception – java.sql.SQLException: доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: YES)

34

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

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

Ваш Ответ

15   ответов
2

jdbc:mysql://localhost:3306/mydb
6

я не выполнил свой 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)

1

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

Это комментарий, а не ответ.
0

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

0

ра с помощью 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();    

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

Спасибо

1

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

2

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

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;

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

Это сработало для меня. Спасибо!
-1

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

11

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

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

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

Вы пробовали с обновленным синтаксисом соединения?
Я работал над одним из моих приложений, связь между кодом и базой данных была в порядке. Я начал получать эту ошибку внезапно, не знаю почему и что делать.
Пожалуйста, смотрите отредактированный пост. ron
Хорошо, прошу прощения, обновил с новым синтаксисом
Если у меня вообще нет базы данных? и я хочу создать базу данных, используя код Java, а не вручную вphpmyadmin , затемdatabaseName не актуально? ron
1

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

   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.

43

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

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

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

@evg Спасибо. работает сейчас!
Вам, вероятно, следует изменить & quot; ИДЕНТИФИЦИРОВАНЫ «корнем» & Quot; на & quot; ИДЕНТИФИЦИРУЕТСЯ «паролем» & Quot; чтобы избежать путаницы.
@evg Я успешно выполнил этот запрос, но все еще не избавился от этой ошибки.
@ Пранджал, ты прав. Благодарю. Я отредактировал ответ.
Не работает для меня
2

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

0

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

Я должен добавить, что это похоже на подход #munchkins, но со стороны панели управления SQL.
1

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

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

Похожие вопросы