MYSQL

Mac MariaDB "doesn't exist in engine" 에러 해결 + MySQL 설치 방법

_알파카 2024. 3. 11. 14:53
728x90

드디어 Mac의 MariaDB에서 일어나는 "Table 'XXX' doesn't exist in engine" 에러를 해결하였다. 

(이 에러 때문에 3일은 고생한듯하다^^)

날짜: 2024년 3월 11일 기준
OS: MacBook M3 Pro Sonoma 14.3

MariaDB 11.3.2 버전

 

다른 모든 쿼리를 작성하면 정상적으로 결과가 나오지만, WITH 구문만 작성하면 저런 에러가 발생하였다. 

심지어, WITH 구문 내의 쿼리만 실행했을 때와 본 쿼리만을 별개로 실행했을 때는 정상적으로 작동하는 것을 보니

오타 등의 문제는 전혀 아니었고, 오직 WITH 구문을 썼을 때만 발생했던 에러였다. 

혹시나 gui 툴의 문제인가 하여 터미널 상에서도 실행해보았지만, 역시나 같은 에러가 발생하였다. 

 

시도 1

: 로그 파일 삭제하기

https://gist.github.com/irazasyed/a74766108b4630fc5c7c822df23526e8

https://frog-hindleg.tistory.com/208

https://velog.io/@reasonoflife39/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8%EC%99%80-MariaDB-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-Table-doesnt-exist-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0

 

위의 글들을 보고 log 파일을 삭제하였지만, 역시 해결되지 않았다. 

참고로 mac에서 mariadb log파일은 

cd /opt/homebrew/var/mysql

내부에 있다. 

 

 

 

해결 방법

: MariaDB 삭제 후 MySQL 설치

-> 결국 MariaDB는 너무 이상해서,, MySQL을 설치하기로 결정하였다^^

헛된 수고를 한 듯 하다^^ 

분명 MariaDB가 MySQL의 발전 버전이라고 하였는데, 왜 이런지는 잘 모르겠다. 

 

MariaDB 완전 삭제 방법

brew services stop mariadb

 

MariaDB 서비스 정지 후, 

brew uninstall mariadb

 

brew를 이용해 삭제를 진행한다. 

cd /opt/homebrew/var
rm -rf mysql
cd /opt/homebrew/etc
rm -rf my.cnf*

 

위의 과정으로 남아있는 파일들도 모두 삭제해주면 완전 삭제가 된다. 

mariadb -V

 

위의 코드를 실행했을 때, 뜨지 않으면 삭제에 성공한 것이다. 

* 참고: https://code-list.tistory.com/4

 

* 참고로.. 아래 블로그를 보고 삭제해봤지만 삭제가 되지 않았다. 위의 방법으로 하면 완벽히 삭제가 된다! 

https://linked2ev.github.io/database/2021/04/15/MariaDB-3.-MariaDB-%EC%84%A4%EC%B9%98-for-Mac/

 

MySQL 설치 방법

먼저, homebrew를 업데이트 해준다. 

brew update

 

다음, homebrew를 통해 mysql을 설치한다. 

brew install mysql

 

mysql 버전을 확인해준다. 

mysql -V

 

여기서 정상적으로 출력이 되면, 잘 설치가 된 것이다. 

 

mysql 서버를 실행해준다. 

brew services start mysql

 

초기 환경 설정을 시행한다. 

mysql_secure_installation

 

1. Would you like to setup VALIDATE PASSWORD component?

(복잡한 비밀번호 여부) -> 필자는 yes로 했다가 아래에서 다시 변경했다..

: y

 

2. Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

(원하는 복잡도 설정)

: 0

 

3. Please set the password for root here. 

(root 계정의 비밀번호 설정)

 

4. Do you wish to continue with the password provided?

(root 계정의 패스워드 강도를 그대로 사용할 것인가?)

: y

 

5. Remove anonymous users?

(익명 사용자 계정을 삭제하겠는가?)

: y

 

6. Disallow root login remotely?

(루트계정의 원격접속 차단여부)

: y

 

7. Remove test database and access to it?

(테스트 DB 삭제 여부)

: y

 

8. Reload privilege tables now?

(변경된 권한 반영)

: y

 

 


비밀번호를 좀 더 쉽게 바꾸고 싶어서,,

"validate_password.policy" 설정을 "Low"로 다시 변경하겠다. 

SET GLOBAL validate_password.policy=LOW;

 

변경 확인

show variables like 'validate_password%';

 

바꾸고 싶은 비밀번호 재설정(root 계정) (mysql 8.X 버전 이상)

alter user 'root'@'localhost' identified with mysql_native_password by '바꿀 비번';

 

변경권한 반영하기

FLUSH PRIVILEGES;

 

끄읏-! 

728x90