历史记录 avater 2025-06-20 13:39:25.626 ERROR 5888 — [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1799) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$ doGetBean$ 0(AbstractBeanFactory.java:324) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109) ~[spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) ~[spring-context-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:755) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:402) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) ~[spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:173) [spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:153) [spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:95) [spring-boot-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) [spring-web-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5128) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.37] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) [catalina.jar:9.0.37] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) [catalina.jar:9.0.37] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) [catalina.jar:9.0.37] at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133) [catalina.jar:9.0.37] at org.apache.catalina.startup.HostConfig$ DeployDirectory.run(HostConfig.java:1866) [catalina.jar:9.0.37] at java.util.concurrent.Executors$ RunnableAdapter.call(Executors.java:511) [na:1.8.0_331] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_331] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.37] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) [na:1.8.0_331] at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1045) [catalina.jar:9.0.37] at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:429) [catalina.jar:9.0.37] at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576) [catalina.jar:9.0.37] at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina.jar:9.0.37] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936) [catalina.jar:9.0.37] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.37] at org.apache.catalina.core.ContainerBase$ StartChild.call(ContainerBase.java:1384) [catalina.jar:9.0.37] at org.apache.catalina.core.ContainerBase$ StartChild.call(ContainerBase.java:1374) [catalina.jar:9.0.37] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_331] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.37] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_331] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) [catalina.jar:9.0.37] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.37] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.37] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) [catalina.jar:9.0.37] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.37] at org.apache.catalina.startup.Catalina.start(Catalina.java:738) [catalina.jar:9.0.37] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_331] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_331] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_331] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_331] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) [bootstrap.jar:9.0.37] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) [bootstrap.jar:9.0.37] Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:403) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1858) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1795) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] … 58 common frames omitted Caused by: org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:69) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcConnection(ImprovedExtractionContextImpl.java:60) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcDatabaseMetaData(ImprovedExtractionContextImpl.java:67) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:333) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:120) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:65) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:318) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:468) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1259) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) ~[spring-orm-5.2.15.RELEASE.jar:5.2.15.RELEASE] … 62 common frames omitted Caused by: java.sql.SQLException: null, message from server: “Host ‘WIN-IF8AUPE59UH’ is not allowed to connect to this MySQL server” at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:446) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.5.jar:na] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] … 77 common frames omitted 链接地址由127.0.0.1改为局域网本地ip地址,还是本机
时间: 2025-07-30 12:36:55 浏览: 22
<think>我们有一个SpringBoot启动失败的异常,核心错误信息是:Causedby:java.sql.SQLException:null,messagefromserver:“Host‘WIN-IF8AUPE59UH’isnotallowedtoconnecttothisMySQLserver”这个错误表明MySQL服务器拒绝了来自主机名为'WIN-IF8AUPE59UH'的连接请求。通常,这是因为MySQL用户没有从该主机连接的权限。从错误堆栈中可以看到,我们使用了Hikari连接池,尝试连接MySQL时失败。问题可能出现在数据库连接配置上。根据描述,链接地址由127.0.0.1改为局域网本地ip地址,还是本机。这意味着在配置文件中,数据库的url可能设置成了本地IP地址(例如192.168.x.x)而不是127.0.0.1或localhost。解决方案:1.检查MySQL服务器是否允许从该主机(当前机器的主机名或IP地址)连接。2.在MySQL中为应用程序使用的数据库用户添加允许从该主机访问的权限。步骤:首先,登录到MySQL服务器(例如,使用root用户):mysql-uroot-p然后,检查当前用户权限:SELECThost,userFROMmysql.user;我们需要确保应用程序使用的用户(比如'myuser')被允许从应用程序所在的主机(主机名为'WIN-IF8AUPE59UH'或对应的IP地址)连接。如果用户不存在或者没有权限,我们可以创建用户并授权:例如,创建用户并授权(注意替换'myuser'和'mypassword'为实际的用户名和密码):CREATEUSER'myuser'@'WIN-IF8AUPE59UH'IDENTIFIEDBY'mypassword';GRANTALLPRIVILEGESON*.*TO'myuser'@'WIN-IF8AUPE59UH';FLUSHPRIVILEGES;或者,如果希望允许从任何主机连接(不推荐,因为不安全):CREATEUSER'myuser'@'%'IDENTIFIEDBY'mypassword';GRANTALLPRIVILEGESON*.*TO'myuser'@'%';FLUSHPRIVILEGES;但是,更安全的方式是明确指定主机。另外,也可以修改现有用户的主机权限:UPDATEmysql.userSEThost='%'WHEREuser='myuser';FLUSHPRIVILEGES;注意:修改权限后,需要刷新权限。此外,还需要检查MySQL服务器的配置,确保它监听所有接口(如果需要从其他机器连接)。在my.ini或my.cnf中,检查:bind-address=0.0.0.0#这样MySQL会监听所有网络接口然后重启MySQL服务。但是,由于问题发生在本机,也可以尝试在连接字符串中使用127.0.0.1或localhost,并确保MySQL用户有'localhost'的权限。在SpringBoot的配置文件(application.properties或application.yml)中,检查数据库连接配置:例如,在application.properties中:spring.datasource.url=jdbc:mysql://localhost:3306/dbname?useSSL=false&serverTimezone=UTCspring.datasource.username=myuserspring.datasource.password=mypassword或者使用IP地址:spring.datasource.url=jdbc:mysql://192.168.x.x:3306/dbname?useSSL=false&serverTimezone=UTC确保这个IP地址是MySQL服务器所在机器的IP,并且该MySQL用户有从这个IP(或主机名)连接的权限。如果使用主机名,请确保主机名能够被解析(在hosts文件中或DNS)。另外,错误信息中显示的是主机名'WIN-IF8AUPE59UH',如果我们在连接字符串中使用的是IP地址,那么可能MySQL服务器在验证权限时会对客户端IP进行反向解析得到主机名,然后检查该主机名是否有权限。如果反向解析得到的主机名不在权限列表中,就会拒绝。为了避免这个问题,我们可以:a)在MySQL中为用户添加IP地址的权限(而不是主机名),例如:'myuser'@'192.168.x.x'b)或者,在MySQL服务器的配置中,跳过主机名解析(在my.ini中添加skip-name-resolve),这样MySQL只使用IP地址进行权限验证。但注意,这可能会影响其他设置(比如权限表中的主机名将不再有效,必须使用IP地址或通配符)。考虑到问题是在本机,最简单的解决方案可能是:-使用127.0.0.1连接,并确保MySQL用户有'localhost'或'127.0.0.1'的权限。例如,在MySQL中:CREATEUSER'myuser'@'localhost'IDENTIFIEDBY'mypassword';GRANTALLPRIVILEGESON*.*TO'myuser'@'localhost';FLUSHPRIVILEGES;或者,如果使用127.0.0.1连接:CREATEUSER'myuser'@'127.0.0.1'IDENTIFIEDBY'mypassword';GRANTALLPRIVILEGESON*.*TO'myuser'@'127.0.0.1';FLUSHPRIVILEGES;总结:这个错误是由于数据库连接权限问题导致的。需要检查并配置MySQL用户权限,允许从当前应用程序所在的主机连接。如果问题仍然存在,请检查防火墙设置,确保MySQL端口(默认3306)是开放的。下面是一个示例的SpringBoot配置(application.properties):spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCspring.datasource.username=myuserspring.datasource.password=mypasswordspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.jpa.hibernate.ddl-auto=update注意:这里使用了localhost,并且假设用户'myuser'在MySQL中有'localhost'的访问权限。另外,从堆栈中看到使用的是Hibernate,可以设置ddl-auto属性,但错误发生在DDL执行时,所以连接失败导致Hibernate无法执行DDL。如果问题解决了,应用应该能正常启动。由于这是一个配置问题,不需要编写代码,但需要调整MySQL权限和SpringBoot配置。因此,这里不提供代码,而是提供配置和MySQL命令的解决方案。但是,为了演示,我们可以写一个简单的SpringBoot应用配置文件。示例配置文件(application.properties):```properties#数据库连接配置spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTCspring.datasource.username=test_userspring.datasource.password=test_password#Hibernate配置spring.jpa.hibernate.ddl-auto=updatespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialectspring.jpa.show-sql=true```以及MySQL中创建用户的命令:```sql--创建用户并授权(本地访问)CREATEUSER'test_user'@'localhost'IDENTIFIEDBY'test_password';GRANTALLPRIVILEGESONtest_db.*TO'test_user'@'localhost';FLUSHPRIVILEGES;```注意:请根据实际情况修改数据库名、用户名和密码。如果使用IP地址连接,则修改配置文件的url和MySQL授权的主机为IP地址。最后,如果问题解决了,应用将正常启动。如果问题依旧,请检查:-MySQL服务是否运行-端口是否正确(3306)-防火墙是否阻止-连接字符串是否正确现在,根据要求,提出相关问题:</think>### 解决方案分析
错误核心原因:MySQL 服务器拒绝了来自主机 `WIN-IF8AUPE59UH` 的连接请求。根本问题是 MySQL 用户权限配置不允许从当前主机连接。
#### 解决步骤:
1. **检查 MySQL 用户权限**
2. **添加或修改用户权限**
3. **验证防火墙设置**
4. **调整 Spring Boot 配置**
---
### 详细解决方案
#### 1. 检查 MySQL 用户权限
登录 MySQL 服务器执行:
```sql
SELECT host, user FROM mysql.user;
```
检查是否存在允许从 `WIN-IF8AUPE59UH` 或 `%`(任意主机)连接的用户。
#### 2. 添加用户权限(在 MySQL 服务器执行)
```sql
-- 创建新用户并授权(推荐)
CREATE USER 'your_user'@'WIN-IF8AUPE59UH' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'WIN-IF8AUPE59UH';
FLUSH PRIVILEGES;
-- 或允许所有主机连接(测试用,生产环境不推荐)
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
```
#### 3. 验证防火墙
确保 MySQL 端口(默认 3306)开放:
```bash
# Windows 检查端口
netsh advfirewall firewall show rule name=all | findstr "3306"
# 开放端口命令(管理员权限)
netsh advfirewall firewall add rule name="MySQL Port" dir=in action=allow protocol=TCP localport=3306
```
#### 4. 调整 Spring Boot 配置
修改 `application.properties`:
```properties
# 使用 IP 地址连接
spring.datasource.url=jdbc:mysql://192.168.x.x:3306/your_db?useSSL=false&serverTimezone=UTC
# 或使用主机名(需配置 hosts 文件)
spring.datasource.url=jdbc:mysql://WIN-IF8AUPE59UH:3306/your_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_user
spring.datasource.password=your_password
```
#### 5. 禁用反向 DNS 解析(可选)
在 MySQL 配置文件 `my.ini` 中添加:
```ini
[mysqld]
skip-name-resolve
```
重启 MySQL 服务使配置生效。
---
### 关键点解释
1. **权限问题**:MySQL 默认只允许 `localhost` 连接,需显式授权其他主机。
2. **防火墙**:Windows 防火墙可能阻止外部连接。
3. **连接配置**:
- 使用实际 IP 而非 `127.0.0.1`
- 用户名需匹配授权主机名
4. **skip-name-resolve**:避免 MySQL 将 IP 反向解析为主机名进行验证。
---
### 验证步骤
1. 在命令行测试连接:
```bash
mysql -u your_user -p -h 192.168.x.x
```
2. 检查 Spring Boot 日志是否显示成功连接数据库。
---
阅读全文
相关推荐



















