【解决报错】java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

本文介绍了在使用IntelliJ IDEA时遇到`java.sql.SQLException: Access denied for user 'root'@'localhost'`的问题,以及如何解决这个问题。解决方法包括修改数据库账户密码和设置MySQL允许远程访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IDE:IntelliJ IDEA Ultimate 2019.3 (我用的是学生版,只要大学邮箱能用就可以的)

报错信息全文附在最后。其中关键的信息就是:

Root Cause

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

解决方法

1.首先,如果项目是你下载的,数据库的账户密码一定都要改好。

2.设置Mysql初始化root密码和允许远程访问:

(1)进入mysql数据库

mysql>update user set password=PASSWORD(‘123456’) where User='root';

(2)授权使Mysql被允许远程访问

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

 

报错信息全文

Exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
### The error may exist in file [/Users/ching_shing/Downloads/JavaEETest-master/MyBlog/target/MyBlog/WEB-INF/classes/mapping/ArticleMapper.xml]
### The error may involve org.sang.dao.ArticleDao.getFirst10Article
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
### The error may exist in file [/Users/ching_shing/Downloads/JavaEETest-master/MyBlog/target/MyBlog/WEB-INF/classes/mapping/ArticleMapper.xml]
### The error may involve org.sang.dao.ArticleDao.getFirst10Article
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
	org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
	org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
	com.sun.proxy.$Proxy27.selectList(Unknown Source)
	org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
	org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
	org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
	org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
	com.sun.proxy.$Proxy28.getFirst10Article(Unknown Source)
	org.sang.service.ArticleService.getFirst10Article(ArticleService.java:29)
	org.sang.controller.ArticleController.index(ArticleController.java:33)
	java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.base/java.lang.reflect.Method.invoke(Method.java:564)
	org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
	org.springframework.web.servlet.mvc.method.annotation.Reques
### 解析 SQL 访问被拒原因 当 Tomcat 启动时遇到 `java.sql.SQLException: Access denied for user 'root'@'localhost'` 错误,通常是因为 MySQL 数据库连接参数不匹配或权限设置不当所致[^1]。 #### 配置文件检查 确保配置文件中的数据库连接字符串和其他属性正确无误。对于基于 Java 的应用程序,常见的配置方式是在 `db.properties` 文件中定义这些值: ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT jdbc.username=root jdbc.password=your_password_here ``` 注意这里使用的是较新的驱动类名 `com.mysql.cj.jdbc.Driver` 而不是旧版本的 `com.mysql.jdbc.Driver`[^2]。 #### 用户认证验证 如果确认用户名和密码均输入正确但仍无法登录,则可能是由于用户的主机地址未授权给 `'root'@'localhost'` 或者存在其他安全策略限制了远程访问。此时可以尝试重新设定 root 密码并授予适当权限: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; ``` 上述命令不仅更改了本地用户的密码还允许来自任何地方(即 `%` 表示任意 IP 地址)对该账户进行身份验证[^5]。 #### 服务状态确认 有时即使所有配置都看起来没问题,但如果 MySQL Server 自身处于停止状态也会引发同样的错误提示。因此建议先检查服务器运行状况,在 Windows 上可以通过命令行工具来控制其启停: ```batchfile net stop mysql net start mysql ``` 这有助于排除因服务崩溃而导致的问题[^3]。 #### 应用程序端口冲突排查 另外值得注意的一点是,某些情况下应用本身的监听端口号可能与其他正在使用的进程发生冲突,尽管这不是直接造成此特定异常的原因之一,但在调试过程中也应予以考虑。例如 Spring Boot 默认会占用 8080 端口作为 HTTP 请求入口,可以在 `application.yml` 中调整该数值以避开潜在干扰源[^4]: ```yaml server: port: 9090 ``` 通过以上几个方面的综合分析与处理措施,应该能够有效解决 Tomcat 启动时报出的 SQL 连接失败问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值