软件工程日报(5.17)
学习内容:
如何解决以下报错Access denied for user 'root'@'localhost' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
这个错误信息表明您尝试使用MySQL数据库时,以用户root从localhost进行登录,但是提供的密码不被接受或者该用户没有足够的权限。要解决这个问题,可以尝试以下几个步骤:
确认密码是否正确:
确保您在连接数据库时使用的密码是正确的。有时候,简单的拼写错误或者大小写不匹配都会导致这个问题。
如果您忘记了密码,可以通过MySQL的重置密码流程来恢复。这通常涉及到修改MySQL的配置文件(如my.cnf或my.ini),以允许无密码登录,然后登录并更改root用户的密码。
检查用户权限:
确认root用户是否有从localhost连接的权限。有时候,尽管用户名和密码正确,但如果数据库中有特定的访问限制(比如IP限制或用户权限配置),也会出现这种错误。可以使用MySQL的命令行工具检查用户权限:
Sql
USE mysql;
SELECT User, Host, Password FROM user WHERE User = 'root';
这个查询会展示所有名为root的用户及其来源主机和密码散列。
修改用户权限:
如果需要,您可以修改或添加root用户的访问权限。例如,允许root从localhost连接:
Sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
这里,your_password应该替换为您的实际密码。
检查连接字符串:
在Java应用中,检查数据库连接字符串(JDBC URL)是否正确无误,特别是关于端口号、数据库名称等部分。格式通常是这样的:
Java
jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
确保数据库名、端口、SSL选项等参数与您的设置相匹配。
环境问题:
如果您是在开发环境中遇到这个问题,确保没有其他服务(如Docker容器、XAMPP、WAMP等)也在使用MySQL并且可能占用了默认端口(通常是3306)。
如果上述步骤都无法解决问题,可能需要更详细地检查MySQL的日志文件,看看是否有其他错误信息提供了线索,或者考虑是否有防火墙规则阻止了访问。
如何解决以下报错Access denied for user 'root'@'localhost' (using password: YES) java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!