2023-07-08 09:25:45.129 ERROR 6944 --- [reate-504497704] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/sky_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.30.jar:8.0.30] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1651) ~[druid-1.2.1.jar:1.2.1] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1717) ~[druid-1.2.1.jar:1.2.1] at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2785) ~[druid-1.2.1.jar:1.2.1]
时间: 2024-04-20 18:24:12 AIGC 浏览: 185
看起来您在连接MySQL数据库时遇到了一个错误。错误消息显示访问被拒绝,可能是由于用户名或密码不正确。
请确保您提供的用户名和密码是正确的,并且具有足够的权限来连接到数据库。您可以检查MySQL服务器配置和用户权限,确保允许通过提供的用户名和密码进行连接。
另外,请确保MySQL服务器正在运行,并且您正在使用正确的主机名和端口号进行连接。
如果问题仍然存在,请提供更多的错误日志和相关的代码,以便我可以更好地帮助您解决问题。
相关问题
2023-06-06 11:43:18.811 ERROR 14452 --- [reate-881137643] com.alibaba.druid.pool.DruidDataSource : create connection error, url: jdbc:mysql://localhost:3306/drug?characterEncoding=utf8&serverTimezone=UTC, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.26.jar:8.0.26] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1461) ~[druid-1.0.29.jar:1.0.29] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1525) ~[druid-1.0.29.jar:1.0.29] at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2100) ~[druid-1.0.29.jar:1.0.29]
这个错误信息表明您在尝试连接 MySQL 数据库时,使用的用户名为 'root',但是该用户在本地主机上被拒绝访问。这通常是因为密码不正确或者您没有为该用户授予在本地主机上访问数据库的权限所致。
您可以尝试以下几个步骤来解决这个问题:
1. 确认您输入的密码是否正确,您可以尝试在 MySQL 命令行中使用该密码登录并查看是否可以成功登录。
2. 确认您已经为该用户授权在本地主机上访问数据库,您可以使用以下命令为 'root' 用户授予在本地主机上访问所有数据库的权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
其中,password 是您为该用户设置的密码。
3. 确认您的 MySQL 服务器是否已经启动并正在监听 3306 端口,您可以使用以下命令检查:
netstat -an | grep 3306
如果该命令返回结果,则表示 MySQL 服务器正在监听 3306 端口。
希望这些信息能够帮助您解决问题。
2099-01-01 00:00:00 - 2025-07-21 10:17:35.672 INFO [fccost,appstart:1B058DFA96949000,,] 14160 --- [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource 2099-01-01 00:00:00 - 2025-07-21 10:17:36.254 ERROR [fccost,appstart:1B058DFA96949000,,] 14160 --- [ main] com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set 2099-01-01 00:00:00 - 2025-07-21 10:17:36.271 INFO [fccost,appstart:1B058DFA96949000,,] 14160 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited 2099-01-01 00:00:00 - 2025-07-21 10:17:36.935 ERROR [fccost,,,] 14160 --- [reate-226149111] c.v.c.c.database.druid.ClientInfoFilter : setApplicationName()异常
<think>好的,我需要帮助用户解决他们提供的日志中的错误和问题。首先,用户给出的日志中有几个关键点需要分析:
1. 第一条日志是INFO级别的DruidDataSource初始化,这看起来是正常的启动信息,没有明显问题。
2. 第二条ERROR日志指出testWhileIdle为true但未设置validationQuery。这可能影响连接池的验证机制,导致连接有效性问题。
3. 第三条INFO日志显示数据源初始化完成,这应该没问题。
4. 第四条ERROR日志来自ClientInfoFilter,setApplicationName()方法出现异常,这可能与数据库驱动兼容性或配置有关。
接下来,我需要针对每个问题提出解决方案。首先,针对testWhileIdle的问题,用户需要配置validationQuery或者将testWhileIdle设为false。其次,setApplicationName异常需要检查数据库驱动版本、Druid版本以及相关过滤器的配置,可能需要升级或调整过滤器设置。
然后,我需要考虑用户可能的环境配置,比如是否使用了Druid的监控功能,或者是否有自定义过滤器导致的问题。此外,验证查询的设置应根据数据库类型来正确配置,比如MySQL使用SELECT 1,Oracle使用SELECT 1 FROM DUAL。
在提出解决方案时,要分步骤说明每个问题的解决方法,并给出示例配置。同时,提醒用户检查依赖版本,避免版本不兼容的问题。最后,生成相关问题时,要围绕Druid配置、验证查询的作用、过滤器异常处理以及Druid升级等方面提问,帮助用户进一步理解和解决潜在问题。</think>日志中存在三个关键问题,以下是解决方案及分析:
1. **DruidDataSource验证配置缺失**
错误描述:`testWhileIdle is true, validationQuery not set`
解决方案:
- 方式一:添加验证SQL(推荐)
```yaml
spring:
datasource:
druid:
validation-query: SELECT 1 # MySQL示例
test-while-idle: true
```
- 方式二:关闭空闲验证(不推荐)
```yaml
spring:
datasource:
druid:
test-while-idle: false
```
2. **ClientInfoFilter异常**
错误描述:`setApplicationName()异常`
原因分析:
- 数据库驱动版本过低(如MySQL 5.7以下不支持`setApplicationName()`)
- Druid版本与数据库驱动不兼容
解决方案:
- 升级MySQL驱动到8.0+
- 或移除ClientInfoFilter(不推荐)
```java
// 在Druid配置中移除该Filter
druidDataSource.setFilters("stat,wall"); // 原配置可能包含clientInfo
```
3. **时间戳异常(非关键)**
日志显示时间戳为`2099-01-01 00:00:00`,可能是日志框架时间戳格式化问题,不影响功能。
阅读全文
相关推荐

















