赞
踩
目录
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)
"Access denied for user 'root'@'localhost' (using password: YES)" 错误表示你的Java应用程序尝试使用用户名 'root' 和提供的密码连接到MySQL数据库,但由于身份验证失败,连接被拒绝了。要解决这个问题,你可以采取以下步骤:
确认用户名和密码:首先,确保你提供的用户名和密码是正确的。检查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;
请将 'your_password' 替换为实际的密码。
检查MySQL服务器配置:检查MySQL服务器的配置文件,例如 my.cnf 或 my.ini,确保允许 'root' 用户从 'localhost' 连接,并且密码验证被启用。在配置文件中查找以下行:
- bind-address = 127.0.0.1
- skip-networking = false
如果需要,确保密码验证被启用:
skip-grant-tables = false
如果做了任何更改,请重启MySQL服务器以使其生效。
检查防火墙和安全组:如果你的服务器上启用了防火墙或安全组,确保端口3306(默认的MySQL端口)处于打开状态,允许来自本地主机的连接。
尝试使用其他用户:为了安全起见,不建议使用 'root' 用户进行应用程序连接。考虑创建一个具有所需权限的新用户,并在应用程序中使用该用户进行连接。
完成这些步骤后,尝试重新运行你的Java应用程序,看看问题是否解决。如果问题仍然存在,请仔细检查日志以获取更多详细信息,以便进一步调试。
上面是通用方法,我遇到的问题,解决方法是这样的:
此错误是因为提供的数据库用户名(在这种情况下是 root
)和密码不正确,或者该用户没有权限连接到指定的数据库。
为了解决这个问题,你应该确保:
root
用户的密码或使用其他具有足够权限的用户。root
用户在 localhost
上有权访问 BookManagement
数据库。如果你需要重置 root
密码,以下是在 Unix/Linux 系统上的基本步骤(在 Windows 上的步骤可能稍有不同):
sudo service mysql stop
来完成。sudo mysqld_safe --skip-grant-tables &
mysql
。- USE mysql;
- UPDATE user SET password=PASSWORD("YOUR_NEW_PASSWORD") WHERE User='root';
- FLUSH PRIVILEGES;
- exit;
替换 YOUR_NEW_PASSWORD
为你想要的新密码。
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
为你设置的新密码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。