728x90
반응형
예전에 공부용으로 homebrew로 설치된 mysql이 있었는데 이번에 예제 따라간다고 웹에서 MySQL 8.4 dmg를 추가 설치하면서 두 버전이 같은 포트와 데이터 디렉토리를 공유하며 지속된 충돌문제가 발생했다.
발생된 로그
| 로그 | 설명 |
| Unable to lock ./ibdata1 error: 35 | InnoDB 데이터 파일(ibdata1)을 중복 프로세스가 잠그려 함 |
| Can't connect to local MySQL server through socket '/tmp/mysql.sock' | 이미 다른 인스턴스가 포트를 점유하거나 소켓 경로 다름 |
| Access denied for user 'root'@'localhost' | root 인증 플러그인 꼬임 (caching_sha2_password ↔ mysql_native_password) |
| brew services list → error 1 | Homebrew 서비스가 손상된 상태 (PID 불일치) |
원인
mysql@8.4(dmg)와 mysql@8.0(Homebrew)이 같은 데이터 경로"/usr/local/var/mysql"를 공유하며 문제가 발생. 어쩐지 나는 웹으로 다운받으면서 root계정이고 나는 비밀번호를 생성한적이 없는데 있어서 의아햇다. dmg 버전은 시스템 전체에서 root권한으로 돌아가고 homebrew 버전은 사용자 계정으로 돌아가기 때문에 포트 사용시 충돌 발생
해결
어차피 homebrew 버전을 더 많이 쓰기 때문에 그냥 웹 버전을 지우기로 했다.
1. 모든 MySQL 프로세스 종료
sudo pkill -9 mysqld
sudo pkill -9 mysql
만약 지워지지 않는다면
ps aux | grep mysqld
로 켜져있는 서버의 PID 번호를 복사해 종료 명령어 뒤에 PID를 명시해주면 된다.
2. 잔여 소켓 / PID 파일 제거
sudo rm -f /usr/local/var/mysql/*.pid sudo rm -f /usr/local/var/mysql/*.sock
3. 데이터 디렉토리 권한 복구
sudo chown -R $(whoami) /usr/local/var/mysql
chmod -R 755 /usr/local/var/mysql
4. 잘못된 버전(8.4) 제거
brew uninstall mysql@8.4
brew cleanup
5. LTS 8.0만 재시작
brew services start mysql@8.0
brew services list
선택사항 비밀번호 재설정
만약 인증이 꼬였을 때:
/usr/local/opt/mysql@8.0/bin/mysqld_safe --skip-grant-tables --skip-networking & mysql -u root --socket=/usr/local/var/mysql/mysql.sock
그 다음 SQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
FLUSH PRIVILEGES;
EXIT;
정상 모드로 재시작:
mysqladmin shutdown
brew services start mysql@8.0
6. 복구 후 정상 확인
mysql -u root -p --socket=/usr/local/var/mysql/mysql.sock
정상 출력 예시:
Welcome to the MySQL monitor
...
mysql>
728x90
반응형
'Dev. > Error.' 카테고리의 다른 글
| [Error] JPA 양방향 연관관계에서 무한 루프문제 해결 (0) | 2025.11.06 |
|---|---|
| [Error] 일정 트러블 슈팅 (1) | 2025.11.05 |
| [Error] 자바에서 객체의 동등성과 동일성 문제 (0) | 2025.10.29 |
| [Error] 키오스크 트러블 슈팅 3 - 장바구니 구조 설계 (0) | 2025.10.28 |
| [Error] 키오스크 트러블 슈팅 2 -책임 분리 (0) | 2025.10.27 |