docker-compose 时用户“root”@“127.0.0.1”(使用密码:NO)的 MariaDB 访问被拒绝

问题描述 投票:0回答:1

我正在开发基于 Debian 的 Virtual Box

我有 docker-compose yaml 文件:

version: '3' 
services:
  mydb:
    build: ./db/
    restart: always 
    networks:
      - dockercompose-frontend 
    volumes:
      - server_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
    healthcheck:
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "--protocol=tcp"]
      interval: 10s
      timeout: 15s
      retries: 5
    ports:
      - "3306:3306"

  frontend:
    build: .
    restart: always
    ports:
      - "8080:80"
    networks:
      - dockercompose-frontend
    environment:
      PMA_HOST=mydb
      PMA_ARBITRARY=1
      PMA_PORT=3306
    depends_on:
      - mydb
     

volumes:
  server_db:
    driver: local
networks:
  dockercompose-frontend:
    driver: bridge

每个服务都有两个 Dockerfile,我只在其中安装必要的映像。

FROM mariabd:latest
RUN apt-get update && apt-get install -y iputils-ping

FROM phpmyadmin:5.2.0-apache
RUN apt-get update && apt-get install -y iputils-ping

当我使用

docker compose up -d
并检查 mydb 的健康状态时,它会抛出:

{
  "Status":"healthy", 
  "FailingStreak": 0, 
  "Log": [{"Start": "2024-02-19T10:05:48.178379963-05:00",
    "End": 2024-02-19T10:05:48.240662846-05:00", 
    "ExitCode": 0, 
    "Output":"mariadb-admin: Access denied for user [email protected] (using password: NO)"
}

还有,

docker exec dockercompose-mydb-1 service mariadb status

抛出“用户访问被拒绝 [电子邮件受保护](使用密码:否)”

之后

docker exec dockercompose-mydb-1 service mariadb restart
docker exec dockercompose-mydb-1 service mariadb status

它抛出相同的

docker docker-compose mariadb
1个回答
0
投票

您需要使用“-proot”在健康检查调用中包含密码,以免收到警告:

      test: ["CMD", "mariadb-admin", "-proot", "ping", "-h", "localhost", "--protocol=tcp"]

类似问题:mysqladmin ping 错误代码

© www.soinside.com 2019 - 2024. All rights reserved.