为什么 Consul 会尝试连接到我的数据库?
Why does Consul try to connect to my database?
我有一个 Spring Boot JPA 应用程序将自己注册为 Consul 的微服务:
@SpringBootApplication
@EnableDiscoveryClient
@EnableAutoConfiguration
public class Bootstrapper {
public static void main(String[] args) {
SpringApplication.run(Bootstrapper.class, args);
}
}
我的 application.yml 看起来像这样:
spring:
datasource:
url: jdbc:mysql://localhost:3306/butler_test
username: root
password: pwd
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
show-sql: false
spring:
cloud:
consul:
discovery:
healthCheckPath: /health
healthCheckInterval: 10s
但是,当 Consul 联系 /health
端点时,我的应用程序中会抛出以下 SQLException
:
"Host '172.17.0.1' is not allowed to connect to this MySQL server".
这是怎么回事,为什么还要尝试连接?
配置数据源后,默认情况下,运行状况检查端点将通过执行 SELECT 1
ping 数据库,以确保与数据库的连接正常。如果是,它将显示状态为 "UP"。由于您看到错误,您的数据库配置可能不正确。
您可以通过在您的属性中配置来禁用数据源健康检查:
management.health.db.enabled=false
如果您想配置检查,请参阅此处:Spring Boot Actuator Health Indicator
我有一个 Spring Boot JPA 应用程序将自己注册为 Consul 的微服务:
@SpringBootApplication
@EnableDiscoveryClient
@EnableAutoConfiguration
public class Bootstrapper {
public static void main(String[] args) {
SpringApplication.run(Bootstrapper.class, args);
}
}
我的 application.yml 看起来像这样:
spring:
datasource:
url: jdbc:mysql://localhost:3306/butler_test
username: root
password: pwd
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
show-sql: false
spring:
cloud:
consul:
discovery:
healthCheckPath: /health
healthCheckInterval: 10s
但是,当 Consul 联系 /health
端点时,我的应用程序中会抛出以下 SQLException
:
"Host '172.17.0.1' is not allowed to connect to this MySQL server".
这是怎么回事,为什么还要尝试连接?
配置数据源后,默认情况下,运行状况检查端点将通过执行 SELECT 1
ping 数据库,以确保与数据库的连接正常。如果是,它将显示状态为 "UP"。由于您看到错误,您的数据库配置可能不正确。
您可以通过在您的属性中配置来禁用数据源健康检查:
management.health.db.enabled=false
如果您想配置检查,请参阅此处:Spring Boot Actuator Health Indicator