Docker mysql映像:根用户的定期访问被拒绝

Docker mysql映像:根用户的定期访问被拒绝,mysql,docker,Mysql,Docker,我使用默认的mysql映像作为docker compose多容器应用程序中的一个容器。我最近开始看到一条周期性的消息每秒都被记录下来。信息是: [Note] Access denied for user 'root'@'localhost' (using password: NO) 并且前面有一个时间戳。docker-compose.yml中的服务配置如下: image: "mysql:5.7.18" command: [mysqld, --character-set-server=

我使用默认的mysql映像作为docker compose多容器应用程序中的一个容器。我最近开始看到一条周期性的消息每秒都被记录下来。信息是:

[Note] Access denied for user 'root'@'localhost' (using password: NO)
并且前面有一个时间戳。docker-compose.yml中的服务配置如下:

 image: "mysql:5.7.18"
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --port=$MYSQL_CONTAINER_PORT]
    expose:
      - "${MYSQL_CONTAINER_PORT}"
    volumes:
      - ${MYSQL_DATA}:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD
      - MYSQL_DATABASE
      - MYSQL_USER
      - MYSQL_PASSWORD
    ports:
      - "${MYSQL_HOST_PORT}:${MYSQL_CONTAINER_PORT}"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 5s
      retries: 10
在构建容器映像时,我特意设置了一个根密码,并且应用程序能够通过我通过环境部分设置的用户名和密码访问数据库

我的应用程序中没有任何东西应该尝试以root用户身份访问mysql映像,我有没有想过如何找出这些尝试在没有密码的情况下以root用户身份登录的来源


如果有帮助,docker-compose.yml文件将设置为2.1版。其他两个容器是(1)flask应用程序和(2)同时也是该应用程序代理服务器的nginx web服务器。

您的问题在于healthcheck命令,Docker尝试在root用户不使用密码的情况下执行该命令:

image: "mysql:5.7.18"
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --port=$MYSQL_CONTAINER_PORT]
expose:
  - "${MYSQL_CONTAINER_PORT}"
volumes:
  - ${MYSQL_DATA}:/var/lib/mysql
restart: always
environment:
  - MYSQL_ROOT_PASSWORD
  - MYSQL_DATABASE
  - MYSQL_USER
  - MYSQL_PASSWORD
ports:
  - "${MYSQL_HOST_PORT}:${MYSQL_CONTAINER_PORT}"
healthcheck:
  test: ["CMD", "mysqladmin", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD",  "ping", "-h", "localhost"]
  timeout: 5s
  retries: 10