MySQL 설치

1. Homebrew로 MySQL 설치

나는 Homebrew를 패키지 매니저로 사용하고 있어 brew를 활용해서 설치했다. MySQL 홈페이지에서 DMG 파일을 다운받아 설치하는 방법도 있다(link).

# ==============================================================================
# 1. Homebrew 버전 확인 및 업데이트
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
brew update

# ==============================================================================
# 2. MySQL 설치
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
brew install mysql@8.0

# ==============================================================================
# 3. 환경변수 설정
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
echo 'export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc

# 터미널에 아래 명령어 입력 후 엔터
source ~/.zshrc

# For compilers to find mysql@8.0 you may need to set:
# export LDFLAGS="-L/opt/homebrew/opt/mysql@8.0/lib"
# export CPPFLAGS="-I/opt/homebrew/opt/mysql@8.0/include"

# For pkg-config to find mysql@8.0 you may need to set:
# export PKG_CONFIG_PATH="/opt/homebrew/opt/mysql@8.0/lib/pkgconfig"

MySQL is configured to only allow connections from localhost by default

# ==============================================================================
# 4. 제대로 설치되었는지 확인
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
mysql --version # or mysql -V

# 제대로 환경변수가 설정되었다면 아래와 같이 출력
mysql  Ver 8.0.34 for macos14.0 on arm64 (Homebrew)

"brew install mysql"명령어를 입력할 경우 8.1.0 버전이 설치된다(참고). AWS RDS 데이터베이스에서 지원하는 최고 버전은 8.0.34이다. 만일 로컬 PC의 DB와 AWS RDS의 DB 버전을 맞추고 싶다면 "mysql@8.0"을 설치해야 한다. 나는 AWS RDS 데이터베이스를 활용할 예정이라 최신 버전이 아닌 8.0.34 버전을 다운로드 했다. MySQL을 설치하면 친절하게 설정과 실행 방법을 알려주니 그대로 잘 따라하면 된다. 설치 후 초기 버전은 root password가 없다. 그래서 따로 설정해야 한다.

# ==============================================================================
# 번외) tree 설치
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
brew install tree

# ==============================================================================
# 번외) tree 명령어로 폴더 구조 확인
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
tree -L 2

# 다음과 같이 출력
.
├── src
    ├── main
    └── test

tree는 재귀 디렉토리 목록 표시 프로그램이다. tree를 설치하면 현재 터미널 위치에서 하위 폴더 구조를 한 눈에 볼 수 있다.

2. MySQL 설정

# ==============================================================================
# 1. MySQL 서버 실행
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
brew services start mysql@8.0 # or mysql.server start

# 백그라운드 실행을 원치 않을 경우 아래 명령어 입력 후 엔터
# /opt/homebrew/opt/mysql@8.0/bin/mysqld_safe --datadir\=/opt/homebrew/var/mysql

# ==============================================================================
# 1. MySQL 설정
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
mysql_secure_installation

# 초기 비밀번호가 설정되지 않았으므로 바로 아래 문구 출력
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough.

# (...중간 설정 생략...)

All done!
  • Would you like to setup VALIDATE PASSWORD component?

    • 비밀번호 설정 질문

    • 0 - Low: 8자 이상

    • 1 - Medium: 8자 이상(숫자, 대소문자 혼합, 특수문자 포함)

    • 2 - Strong: 8자 이상(숫자, 대소문자 혼합, 특수 문자 포함, 비밀번호를 딕셔너리 파일과 비교)

  • Do you wish to continue with the password provided?

    • 방금 설정한 비밀번호를 사용할 것인지를 묻는 질문

  • Remove anonymous users?

    • 익명 계정을 삭제할 것인지 묻는 질문

    • 보안을 위해서는 삭제하는 게 좋음

  • Disallow root login remotely?

    • root 계정 원격 접속을 차단할 것인지 묻는 질문

    • 보안을 위해서는 차단하는 게 좋음

  • Remove test database and access to it?

    • 테스트 데이터베이스를 삭제할 것인지 묻는 질문

  • Reload privilege tables now?

    • 앞선 설정들을 적용하기 위해 권한 테이블을 다시 불러올 것인지 묻는 질문

필요에 따라 질문에 답하면 된다.

# ==============================================================================
# 1. 서버 실행 시 에러가 출력되는 경우
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
brew services start mysql@8.0

# 에러 출력
Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/jiunkoo/Library/LaunchAgents/homebrew.mxcl.mysql@8.0.plist` exited with 5.

# 터미널에 아래 명령어 입력 후 엔터
mysql.server start

# 에러 출력
Starting MySQL
... ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/username-MacBookPro.local.pid).

# ==============================================================================
# 2. 설치된 MySQL 삭제
# ==============================================================================
# 터미널에 아래 명령어 입력 후 엔터
rm -rf /opt/homebrew/var/mysql

# 터미널에 아래 명령어 입력 후 엔터
brew uninstall mysql@8.0

간혹 MySQL 서버를 시작할 때 위와 같은 에러가 발생한다. 나는 Apple Silicon 맥북이라 mysql의 설치 경로가 /usr/local/var/mysql이 아닌 /opt/homebrew/var/mysql이었다. 혹시 /usr/local/var/ 폴더 하위에 아무것도 없다면 homebrew 하위 폴더를 확인해보자. 내 경우 설치된 MySQL을 삭제하고 재부팅한 뒤 MySQL을 재설치하니 에러가 해결되었다.

참고 자료

Last updated