2025. 5. 18. 14:57ㆍDB/MYSQL
상황
(전날)스프링부트 기동 정상 실행 & MySQLWorkbench도 정상 작동
(당일) 아무것도 건들지 않고 스프링부트 기동시 오류 발생 & MySQLWorkbench에서도 서버상태 멈춰있는 상태로 실행안됨
아무설정도 건든게 없고 MySQLWorkbench 도 동작을 안하는 거 보니, MySQL 서버 상태가 의심됨
- 오류내용(일부) : Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:191) ~[hibernate-core-6.6.13.Final.jar:6.6.13.Final]
조치
1) mysql서버 기동여부 확인
→ 실행중 확인
→ mysql서버가 기동중인데 왜 부트도 안뜨고 MySQLWorkbench에서도 확인이 안된것일까?
$ ps aux | grep mysqld
b~ 12345 0.0 0.0 123456 777 a001 S+ 1:39PM 0:00.00 grep mysqld
2)
현재 MySQL이 어느 포트/소켓으로 열려 있는지 확인
→ 2가지 명령어로 상태확인시 아무 실행결과 없는 상태
→ (상황) MySQL 프로세스가 실행 중이긴 하지만, TCP 포트에서 수신 대기 중이 아님
→ 즉, 소켓 파일로만 열려 있는 상태 (비정상적인 설정일 가능성 있음)
$ sudo lsof -iTCP -sTCP:LISTEN -n -P | grep mysql
$ -- 실행결과 없음
$ netstat -an | grep 3306
$ -- 실행결과 없음
해결 : MySQL을 완전히 중단 후, TCP 포트 3306에서 다시 실행되도록 재기동
1) MySQL을 완전히 중단
$ sudo pkill mysqld
$
2) 정확한 mysql.server 스크립트로 MySQL 시작
$ sudo /usr/local/~/mysql.server start
Starting MySQL
SUCCESS!
3) 다시 포트 열렸는지 확인
$ sudo lsof -iTCP -sTCP:LISTEN -n -P | grep mysql
mysqld ~ (LISTEN)
4) MySQl 접속 → 나의 경우 해당 명령어 실행시 정상실행되진 않았지만, '3)'까지 실행 후 부트 재기동 & MySQLWorkbench 정상작동 확인
$ mysql -u root -p
추가 1: 4)번 해결방법
MySQL 클라이언트(mysql 명령어)가 현재 PATH에 등록되어 있지 않아서 터미널에서 인식되지 않음
👉 MySQL 서버는 설치되어 있지만, mysql 명령어가 터미널에서 어디에 있는지 몰라서 실행이 안 됨.
1) MySQL 클라이언트 명령어 위치 확인 → 실행결과 중 그중에 bin/mysql 로 끝나는 경로를 찾기
$ sudo find /usr/local -name mysql
2) 찾은 경로를 터미널 PATH에 추가
$ echo 'export PATH="찾은경로/bin:$PATH"' >> ~/.zprofile
source ~/.zprofile
3) 등록 확인
$ which mysql
4) 서버접속 확인
$ mysql -u root -p
추가2 : 맥 재기동시 MySQL 완전 자동 시작 설정
방법1-수동설정: launchctl로 MySQL 자동 시작 설정
1) LaunchDaemon에 MySQL 등록
$ sudo cp /usr/local/mysql/support-files/com.mysql.mysql.plist /Library/LaunchDaemons/
2) 권한 설정
$ sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
3) MySQL 자동실행 등록
$ sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
4) 맥 재부팅후 자동실행 여부 확인
$ ps aux | grep mysqld
방법2-'.sh'생성(최초1회만실행시 자동기동): launchctl로 MySQL 자동 시작 설정
1) 터미널에서 명령어 실행 -nano로 작성
$ nano setup-mysql-autostart.sh
2) 편집기에서 아래내용작성
→ ^+O(저장)
→ ^+X(나가기)
#!/bin/bash
sudo cp /usr/local/mysql/support-files/com.mysql.mysql.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
echo "✅ MySQL이 부팅 시 자동으로 실행되도록 설정되었습니다."
3) 아래명령어 실행
$ chmod +x setup-mysql-autostart.sh
./setup-mysql-autostart.sh
'DB > MYSQL' 카테고리의 다른 글
[SQL] MySQL 날짜관련 함수 사용시 주의할 점 (0) | 2023.12.13 |
---|---|
[SQL] MySQL DATE_ADD(날짜 더하기) & DATE_SUB(날짜 빼기) (0) | 2023.12.13 |
[MySQL] 윈도우 MySQL 클라이언트 사용법 (0) | 2022.08.23 |
[MySQL] 윈도우 MySQL 설정방법 (0) | 2022.08.23 |
[MySQL] 윈도우 MySQL Workbench 설치방법 (0) | 2022.08.23 |