MySQL Error 256 및 Background Process 이슈 해결기

SOCICAL·2025년 1월 22일
0
# 최근 수정 날짜: 25.01.22

# 문제 상황

MySQL을 Homebrew로 설치한 후, brew services list에서 MySQL 상태가 error 256으로 표시되고, 데이터 디렉터리 파일 삭제 후에도 파일이 자동으로 재생성되는 문제가 했다. 또한 MySQL 폴더 내부의 파일이 제거되지 않아 초기화 작업이 계속 실패했으며, MySQL 서비스가 stoped 상태로 시작되지 않았다.

# 주요 이슈

  • error 256 상태로 표시된 MySQL 서비스.
  • mysql.server start로는 정상 작동하지만 Homebrew 서비스가 실패함.
  • MySQL 데이터 디렉터리(/opt/homebrew/var/mysql/) 파일 삭제가 제대로 이루어지지 않음.
  • Background에서 mysqld_safe 프로세스가 자동 실행되어 파일이 재생성됨.

# 삽질 과정

  1. Homebrew와 MySQL 초기화 시도
  • 시도: brew services stop mysql 명령어로 MySQL 서비스를 중지한 후 데이터 디렉터리 초기화.
  • 문제: 데이터 디렉터리 초기화(sudo rm -rf /opt/homebrew/var/mysql/*)를 실행해도 파일이 자동으로 재생성.
  1. mysqld_safe Background Process 확인
  • 발견: macOS 설정 > Background Process에서 mysqld_safe가 활성화된 것을 확인.
  • 조치: 해당 프로세스를 비활성화 후 데이터 디렉터리 삭제 재시도.
  1. 데이터 디렉터리 삭제 및 초기화 성공
  • 조치: mysqld_safe를 비활성화한 후 데이터 디렉터리 삭제.
sudo rm -rf /opt/homebrew/var/mysql/*
sudo chown -R $(whoami):admin /opt/homebrew/var/mysql
sudo chmod -R 755 /opt/homebrew/var/mysql
  • 결과: 데이터 디렉터리가 비워졌고 초기화(mysqld --initialize) 작업 성공.
  1. plist 파일 오류 해결
  • 문제: ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 파일이 error 256 상태로 표시됨.
  • 조치:
    • mysqld_safe를 백그라운드에서 다시 활성화.
    • 컴퓨터 재부팅 후 plist 파일 문제 해결.

# mysqld_safe란?

mysqld_safe는 MySQL 데몬(mysqld)을 안전하게 실행하도록 보조하는 프로그램이다. 서버가 비정상 종료될 경우 자동으로 재시작을 시도하는 등의 기능을 제공.

  • 주요 역할:
    • MySQL 서버 안정성 유지.
    • 비정상 종료 시 서버 자동 재시작.
    • 로그 및 에러 관리.

하지만 백그라운드에서 mysqld_safe가 활성화되어 있으면 수동 관리 및 Homebrew 서비스 설정과 충돌을 일으킬 수 있다.


# 해결 과정 요약

  1. mysqld_safe 비활성화:
    • macOS 설정 > Background Process에서 mysqld_safe 비활성화.
  2. 데이터 디렉터리 삭제 및 초기화:
    sudo rm -rf /opt/homebrew/var/mysql/*
    sudo chown -R $(whoami):admin /opt/homebrew/var/mysql
    sudo chmod -R 755 /opt/homebrew/var/mysql
    mysqld --initialize --user=$(whoami) --basedir=$(brew --prefix mysql) --datadir=/opt/homebrew/var/mysql --tmpdir=/tmp
  3. MySQL 서비스 재설정:
    brew services stop mysql
    rm -f ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    brew services start mysql
  4. 컴퓨터 재부팅:
  • mysqld_safe를 백그라운드에서 다시 활성화 후 재부팅.

# 사용한 명령어 정리

  1. 서비스 중지 및 정리
  brew services stop mysql
  brew services cleanup
  1. 데이터 디렉터리 삭제 및 초기화
sudo rm -rf /opt/homebrew/var/mysql/*
sudo chown -R $(whoami):admin /opt/homebrew/var/mysql
sudo chmod -R 755 /opt/homebrew/var/mysql
mysqld --initialize --user=$(whoami) --basedir=$(brew --prefix mysql) --datadir=/opt/homebrew/var/mysql --tmpdir=/tmp
  1. MySQL 서비스 재등록 및 시작
brew services start mysql
  1. 수동 실행 및 상태 확인
mysql.server start
mysql.server status

# 교훈 및 방지 대책

  1. mysqld_safe 확인:

    • macOS Background Process에서 mysqld_safe를 확인하고 필요 시 비활성화.
  2. 권한 문제 방지:

    • 데이터 디렉터리 삭제 후 권한을 반드시 수정.
  3. 로그 점검:

    • /opt/homebrew/var/mysql/immin-uui-MacBookPro.local.err 및 ~/Library/Logs/Homebrew/mysql.log를 확인하여 문제를 파악.
  4. 서비스 관리 명령어 숙지:

    • Homebrew와 MySQL 관리 명령어를 잘 이해하고 사용.

0개의 댓글