JDBC / MYSQL: java.sql.SQLException: доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: НЕТ) - PullRequest
0 голосов
/ 16 ноября 2011

С этим кодом

String url = "jdbc:mysql://localhost/mysql";
Connection con = DriverManager.getConnection(url, "root", "");

Я получаю следующее исключение.

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    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:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at MyTest1.main(MyTest1.java:29)

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

N
 5.5.17-log
           7{*Zj%u☻ǧ|tR}=Vz'L,6imysql_native_password"

Ответы [ 3 ]

0 голосов
/ 17 ноября 2011

Оказалось, что с моей установкой MYSQL возникли проблемы. Я удалил пакет AMP, который использовал, и вместо этого установил XAMPP, и он работает.

0 голосов
/ 04 марта 2014

Даже я тоже сталкивался с такой же проблемой.Но в моем приложении я допустил одну ошибку, как будто забыл дать пароль.Вы можете попробовать войти в MySQL вручную и проверить, какие имя пользователя и пароль вы используете для входа.Те же самые детали вы можете использовать в URL.Лучше дать также имя базы данных.Как показано ниже Для MySQL:

String url = "jdbc:mysql://localhost:3306/mysql";
Connection con = DriverManager.getConnection(url, "root", "");

Выше вы забыли указать номер порта MySQL.Вы можете проверить, есть ли у вашего MySQL номер порта или нет.По умолчанию номер порта mySQL - 3306. Лучше создать и использовать собственную базу данных.

Если вышеприведенное не работает, попробуйте предоставить GRANT все привилегии для пользователя root в вашей базе данных.Чтобы предоставить все привилегии, ниже приведен запрос

GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' WITH GRANT OPTION;

или

GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' IDENTIFIED BY 'root';
0 голосов
/ 16 ноября 2011

'root'@'localhost' отличается от 'root'@'%'.Возможно, это проблема с разрешениями.

Я предлагаю вам войти через консоль, создать пользователя 'test' @ '%' с паролем и дать ему все разрешения.Вы можете узнать, как это сделать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...