Docker MySQL镜像:root定期访问被拒绝

3

我正在使用docker compose在一个多容器应用中将默认的mysql镜像作为一个容器。最近我开始看到一个周期性的消息每秒被记录下来。这个消息是:

[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 密码,应用程序可以通过我在环境部分设置的用户名和密码访问数据库。但是,我的应用程序没有任何东西应该尝试使用 root 访问 mysql 镜像,你能想到如何找出这些尝试以 root 身份登录但没有密码的来源吗?如果有帮助的话,docker-compose.yml 文件设置为版本 2.1。另外两个容器分别是一个 Flask 应用程序和一个充当代理服务器的 Nginx Web 服务器。
1个回答

4

你的问题在健康检查命令上,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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接