본문 바로가기
Project

[DataBase][Mac/M1] MySQL 또 말썽부리다....

by SolaKim 2024. 5. 17.

이번 데이터베이스 프로젝트를 위해서 사용하는 프레임워크는 Django 이다.

하지만 Django 는 기본적으로 sqlite3 를 사용하며, 이는 ORM (Object Realational Mapper)으로 동작한다. 
여기서 ORM이란, 객채(Object)의 관계(Relational)를 연결(Mapper)해주는 것을 뜻한다. 객체 지향적인 방법을 사용하여 데이터베이스의 데이터를 쉽게 조작할 수 있게 해주는 것이다. 즉, Django의 ORM이란, 파이썬과 데이터베이스의 SQL사이의 통역사 역할을 해준다.

그렇기 때문에 쿼리문을 이용해야하는 데이터베이스 프로젝트에서는 적절치 않았기 때문에 MySQL을 따로 연동해서 사용하고자 하였다. 그래서 오랜만에 mysql 을 찾아보니 맥북에서 전혀 인식을 못하더라...! reinstall 가자!

🔽 mysql 완전삭제

# 프로세스 죽이기
brew services stop mysql
# 설치 경로 확인
which mysql
/usr/local/bin/mysql
# homebrew로 삭제
brew uninstall --force mysql

 

🔽 mysql 설치

brew install mysql
# mysql 서비스 시작
brew services start mysql
# root 비번 생성
mysql_secure_installation

순서대로 아래 질문들이 나오면 y 또는 n을 입력하여 설정해준다.

비밀번호 복잡도 검사 과정 (n)
비밀번호 입력 & 확인
익명 사용자 삭제 (y)
원격 접속 허용하지 않을 것인가? (y)
test DB 삭제 (n)
previlege 테이블을 다시 로드할 것인지 (y)
설정을 마치면 All done! 메세지가 출력된다.

🔽 openssl 설치

brew install openssl

 

자 그리고 파이참 터미널에 다음가 같이 코드를 작성해준다.

# 가상환경 켜주기
conda activate <가상환경이름>

# mysqlclient 설치
pip install mysqlclient


하지만 어림도 없이 다음과 같은 에러 발생 💥

error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.

이 에러는 wheel 설치가 안됐다는 이야기 같은데, 이 오류를 해결하기 위해 긴 여정을 떠났다... 

일단 터미널을 켜서 침착하게 문제를 해결해보았다.

# 환경 변수로 등록
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc

# 환경 변수 반영
source ~/.zshrc

# mysqlclient 설치
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

하지만 어림없이 실패! 구글링을 해보니 이게 Mac silicon M1 이상인 컴퓨터만 종종 바로 되는 사람도 있지만 실패하는 사람들도 많은것 같더라..

자 다시 가봅시다.

파이참 터미널에 다음과 같은 코드를 순서대로 실행해준다.

# mysql-client 설치
brew install mysql-client

# 그냥 이대로 치면 된다.
export LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql-client/include"

# 혹시 모르니 openssl도 다시 재설치 후 환경 변수 등록해준다.
brew uninstall --ignore-dependencies openssl@3
brew install openssl@3
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"

# pkg 설치
brew install pkg-config

# mysqlclient 설치
pip install mysqlclient

휴 드디어 완료...

 

다들 즐거운 코딩하세요~~ 😂