java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at BookManagement.<init>(BookManagement.java:23) at BookManagement.main(BookManagement.java:66)
Ошибка «Доступ запрещен для пользователя 'root'@'localhost' (с использованием пароля: ДА)» означает, что ваше Java-приложение пыталось подключиться к базе данных MySQL, используя имя пользователя «root» и предоставленный пароль, но соединение было заблокировано из-за аутентификации. отказ. Чтобы решить эту проблему, вы можете предпринять следующие шаги:
Подтвердите имя пользователя и пароль:первый,Убедитесь, что введенные вами имя пользователя и пароль верны. Проверьте базу данных MySQL 'root' Учетные данные пользователя, включая имя пользователя и пароль, верны. Если вы не уверены в своем пароле, вы можете сбросить его в базе данных MySQL. 'root' Пароль пользователя.
Проверить хост:убедитесь, что вашJavaПриложение загружается с правильного хоста('localhost')подключиться кMySQLсервер。Если приложение не работает на локальном хосте,Для установки соединения вам необходимо использовать правильное имя хоста и IP-адрес.
Проверьте разрешения:убеждаться 'root' Пользователь имеет достаточные разрешения для подключения к серверу MySQL. Вы можете использовать следующую команду в MySQL как 'root' Разрешения, предоставленные пользователем:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
Пожалуйста, замените «ваш_пароль» своим действительным паролем.
Проверьте конфигурацию сервера MySQL:исследоватьMySQLсерверфайл конфигурации,Например my.cnf или my.ini, убедитесь, что это разрешено 'root' Пользователь из 'localhost' подключен и включена аутентификация по паролю. Найдите в файле конфигурации следующие строки:
bind-address = 127.0.0.1
skip-networking = false
При необходимости убедитесь, что проверка пароля включена:
skip-grant-tables = false
После выполнения этих шагов попробуйте перезапустить приложение Java, чтобы проверить, решена ли проблема. Если проблема не устранена, дважды проверьте журналы для получения более подробной информации для дальнейшей отладки.
Вышеупомянутый метод является общим. Проблема, с которой я столкнулся, и решение таково:
Эта ошибка связана с тем, что указанное имя пользователя базы данных (в данном случае root
)и пароль неверный,или У этого пользователя нет разрешения на подключение к указанной базе данных.
Чтобы решить эту проблему, вам следует убедиться:
root
Пароль пользователя или используйте другого пользователя с достаточными разрешениями.root
Пользователь находится в localhost
иметь доступ к BookManagement
база данных.Если вам нужно сбросить root
Пароль, следующее находится в Unix/Linux Основные шаги в системе (в Windows Действия, описанные выше, могут немного отличаться):
останавливаться MySQL сервер. Обычно это можно сделать, запустив sudo service mysql stop
завершить.
запускать MySQL сервер,Нет Проверьте разрешения。Запустите следующую команду:sudo mysqld_safe --skip-grant-tables &
Войдите в MySQL. Просто беги mysql
。
Установите новый пароль:
USE mysql;
UPDATE user SET password=PASSWORD("YOUR_NEW_PASSWORD") WHERE User='root';
FLUSH PRIVILEGES;
exit;
заменять YOUR_NEW_PASSWORD
для нового пароля, который вы хотите.
сновазапускать MySQL сервер:sudo service mysql restart
После выполнения вышеуказанных шагов вы сможете использовать новый пароль Войдите в MySQL.
Затем обязательно используйте правильный пароль в своем Java-коде:
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/BookManagement?useSSL=false&serverTimezone=UTC", "root", "YOUR_NEW_PASSWORD");
заменять YOUR_NEW_PASSWORD
Вам установлен новый пароль.