为什么 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