docker-compose.yml up 중 host error(1130)

24.02.16 00:58 작성 조회수 103

0

docker-compose -f docker-compose.yml up --build 를 시도하니

django.db.utils.OperationalError: (1130, "Host '172.29.0.3' is not allowed to connect to this MySQL server")

이러한 error가 뜹니다.

 

검색해보니 host 접속권한(?)이 없는 것이라 해서 mysql root계정에 모든 host 접속을 허용해주었습니다...

스크린샷 2024-02-16 005623.png

 

version: '3'
services:

  db:
    container_name: db
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: mysql
    expose:
      - 3306
    ports:
      - "3307:3306"
    env_file:
      - .env
    volumes:
      - dbdata:/var/lib/mysql

  web:
    container_name: web
    build: .
    command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    environment:
      MYSQL_ROOT_PASSWORD: mysql
      DATABASE_NAME: mysql
      DATABASE_USER: 'root'
      DATABASE_PASSWORD: mysql
      DATABASE_PORT: 3306
      DATABASE_HOST: db
      DJANGO_SETTINGS_MODULE: dislodged_project.settings.dev
    restart: always
    ports:
        - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db
volumes:
  app:
  dbdata:

 

무엇보다 지금까지 문제없이 잘 됐는데 갑자기 저 host 접속이 안된다고 떠서..이유를 모르겠습니다...

아니면 mysql을 재설치하면 해결될까요..?

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.17

안녕하세요, 인프런 AI 인턴입니다.

최유미님, MySQL 호스트 접속 문제로 어려움을 겪고 계신 것 같네요. Docker Compose를 사용할 때 컨테이너 간 네트워크 통신은 Docker 내부 네트워크를 사용하므로, MySQL 서버의 호스트 접속 설정을 확인해야 합니다.

MySQL 서버 설정에서 모든 호스트(’%’)로부터의 root 접속을 허용한 것은 맞지만, 실제 MySQL 사용자 계정에 대한 호스트 접근 권한이 제대로 설정되어 있는지 다시 확인해보셔야 할 것 같습니다.

또한, Docker Compose 사용 시 서비스의 네트워크명이 컨테이너의 호스트명으로 사용됩니다. 따라서 DATABASE_HOST: db 설정이 올바르게 적용되어 있음을 확인할 필요가 있습니다.

이미지 게시물로 보이는 MySQL 에러 메시지는 ‘mysql’@‘%’ 사용자 계정 삭제와 관련된 것이고, 해당 작업이 실패했음을 나타냅니다. 이는 Docker Compose와 연결된 내용은 아니므로 현재 문제와는 직접적인 관련이 없을 수 있습니다.

문제 해결을 위해 다음 단계를 시도해 보시면 좋을 것 같습니다:

  1. MySQL 컨테이너에 직접 접속해서 사용자 계정 및 호스트 권한을 확인합니다.
    예) SELECT user, host FROM mysql.user; 이용

  2. 이미지에 보이는 오류와 관계 없이 MySQL 사용자 권한 부여를 확인합니다.
    예) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION;

  3. MySQL 서버의 호스트 접속 설정이 적용되었는지 확인합니다.
    예) MySQL 서버 재시작을 포함한 상태 확인

MySQL을 재설치하기 전에, 위의 방법으로 문제를 해결해 보실 수 있습니다. Docker Compose 내부 네트워킹에 문제가 없고, MySQL 서버 설정이 올바르면 재설치 없이도 문제를 해결할 수 있을 것입니다.

MySQL 서버 접속 권한 설정에 관한 더 자세한 정보는 아래 링크에서 확인하실 수 있습니다.

도움이 되시길 바라며, 추가적인 도움이 필요하시면 언제든지 문의해 주세요.