ERROR com.alibaba.druid.pool.DruidDataSource:599 - init datasource error, url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
时间: 2025-07-09 20:49:30 浏览: 5
<think>嗯,用户遇到了一个数据库连接错误,具体是Druid数据源初始化失败,提示访问被拒。错误信息显示用户是'root'@'localhost',密码使用的是YES。我需要先分析可能的原因,然后一步步引导用户排查。
首先,可能的原因包括密码错误、权限问题、用户不存在、MySQL服务未运行、防火墙设置、连接参数问题等。我应该按照常见到少见的顺序排列,帮助用户逐一检查。
用户可能对数据库配置不太熟悉,所以需要给出具体的检查步骤,比如确认密码是否正确,检查MySQL服务状态,确认用户权限是否存在,以及查看连接参数是否有误。另外,可能需要指导用户如何通过命令行登录MySQL,验证账号密码是否正确,或者如何查看用户权限。
还需要注意连接URL中的参数是否有特殊字符需要转义,比如&符号在URL中应该用&表示,但有时候配置文件中可能需要不同的处理方式。此外,SSL和时区设置是否正确也可能影响连接,但根据错误信息,目前主要问题还是访问被拒,所以先解决认证问题。
最后,要提醒用户如果自行解决困难,可以多提供一些环境信息,比如MySQL版本,配置文件内容(隐藏敏感信息后),这样更有利于进一步诊断问题。保持回答结构清晰,步骤明确,避免使用专业术语过多,用用户能理解的语言解释。</think>这个错误表明应用程序在尝试连接MySQL数据库时因权限认证失败被拒绝。以下是逐步排查和解决问题的思路:
---
### **1. 确认账号密码正确性**
错误信息显示使用`root@localhost`账号且密码存在(using password: YES)
- **检查配置文件**:确认`application.yml`或`application.properties`中配置的username/password是否正确
```yaml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?...
username: root
password: your_password_here
```
- **手动验证密码**:通过MySQL命令行测试登录
```bash
mysql -u root -p
# 输入密码后观察是否能登录成功
```
---
### **2. 检查MySQL用户权限**
错误可能由用户权限不足导致,需确认:
- **用户是否存在**:
```sql
SELECT User, Host FROM mysql.user WHERE User = 'root';
```
- **授权是否正确**(注意替换`your_password`):
```sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
---
### **3. 验证MySQL服务状态**
- **服务是否运行**:
```bash
# Linux
systemctl status mysql
# Windows
服务管理器查看MySQL状态
```
- **端口是否可访问**:
```bash
telnet 127.0.0.1 3306
```
---
### **4. 检查连接参数细节**
从URL参数中需注意:
```text
jdbc:mysql://127.0.0.1:3306/jeecg-boot?
characterEncoding=UTF-8&
useUnicode=true&
useSSL=false&
tinyInt1isBit=false&
allowPublicKeyRetrieval=true&
serverTimezone=Asia/Shanghai
```
- **特殊字符转义**:如果配置文件使用XML格式,`&`需转义为`&`
- **SSL设置**:测试时可暂时关闭SSL(生产环境需谨慎)
---
### **5. 其他可能性**
- **密码包含特殊字符**:尝试用英文单引号包裹密码
- **MySQL版本兼容性**:检查驱动版本是否匹配(如MySQL 8.x需使用`com.mysql.cj.jdbc.Driver`)
- **防火墙限制**:确认3306端口未被防火墙拦截
---
### **建议操作流程**
1. 通过命令行验证账号密码能否登录
2. 检查用户权限表`mysql.user`
3. 临时关闭防火墙测试
4. 在代码中打印实际使用的连接参数(注意脱敏)
若问题仍未解决,请提供以下信息:
- MySQL版本
- JDBC驱动版本
- 完整的连接参数(隐藏密码)
- 错误堆栈中是否有其他关联异常
阅读全文
相关推荐


















