MySQL 소개와 설치

공부하는 감자·2024년 4월 8일
0

MySQL

목록 보기
45/74
post-thumbnail

MySQL 소개

MySQL은 소스가 공개된 오픈소스 데이터베이스이다.

MySQL의 역사

  • 1979년 스웨덴의 TcX라는 회사의 터미널 인터페이스 라이브러리인 UNIREG로부터 시작했다.
  • UNIREG는 1994년 웹 시스템의 데이터베이스로 사용하기 시작하면서 MySQL 버전 1.0이 완성되었다.
    • 이는 TcX 시내에서만 사용되다가 1996년 일반인에게 공개됐다.
  • 2000년 TcX에서 MySQL을 개발한 중심인물인 몬티와 데이빗이 MySQL AB라는 회사로 독립함과 동시에 FPL(Free Publish License) 라이선스 정책으로 바뀌었다.
  • 2006년 최종적으로 현재와 같은 두 가지 라이선스 정책을 취한다.
  • 이후 썬마이크로시스템즈에 인수되고, 다시 오라클로 인수된다.

라이선스 정책

MySQL은 100% 무료는 아니다.

  • 현재 MySQL의 라이선스 정책은 다음 두 가지이다.
    • MySQL 엔터프라이즈 에디션
    • MySQL 커뮤니티 에디션
  • 별도의 라이선스 계약 없이 일반 사용자가 내려받아 사용하는 버전은 ‘MySQL 커뮤니티 에디션’이다.
  • 두 에디션의 소스코드는 동일하다.
    • MySQL 5.5 이전 버전까지 두 에디션의 차이는 얼마나 자주 패치 버전이 릴리스되느냐 정도였다.
    • 커뮤니티 에디션은 소스코드가 공개되어 있다.
    • 엔터프라이즈 에디션은 라이선스 계약을 맺은 사용자에게는 소스코드를 공개했었지만, 2011년 2월 MySQL 5.5 GA(General Available) 버전부터는 엔터프라이즈 에디션의 소스코드가 더는 공개되지 않도록 바뀌었다

MySQL 서버 설치

MySQL 서버는 다음과 같이 다양한 형태로 설치할 수 있지만 가능하다면 리눅스의 RPM이나 운영체제별 인스톨러를 이용하기를 권장한다.

  • Tar 또는 Zip으로 압축된 버전
  • 리눅스 RPM 설치 버전 (윈도우 인스톨러 및 macOS 설치 패키지)
  • 소스코드 빌드

버전 선택

  • MySQL 서버의 버전을 선택할 때는 다른 제약 사항(기존 솔루션이 특정 버전만 지원하는 경우)이 없다면 가능한 최신 버전을 설치하는 것이 좋다.
    • 기존 버전에서 새로운 메이저 버전으로 업그레이드하는 경우라면 최소 패치 버전이 15~20번 이상 릴리스된 버전을 선택
    • 갓 출시된 메이저 버전은 치명적이거나 보완하는데 많은 시간이 걸릴만한 버그가 발생할 수 있기 때문에 조금 위험할 수 있다.

에디션 선택

  • 초기 버전의 MySQL 서버는 엔터프라이즈 에디션과 커뮤니티 에디션으로 나뉘어 있기는 했지만 기술 지원의 차이만 있었다.
  • MySQL 5.5 버전부터는 두 에디션의 기능이 달라지면서 소스코드도 달라졌다.
  • MySQL 서버의 상용화 전략은 핵심 내용은 두 에디션 모두 동일하며, 특정 부가 기능들만 상용 버전인 엔터프라이즈 에디션에 포함되는 방식이다.
    • 이런 상용화 전략을 오픈 코어 모델(Open Core Model)이라고 한다.
    • MySQL 엔터프라이즈 에디션과 커뮤니티 에디션의 핵심 기능은 거의 차이가 없다.
  • 다음과 같은 부가적인 기능과 서비스들은 엔터프라이즈 에디션에서만 지원된다.
    • Thread Pool
    • Enterprise Audit
    • Enterprise TDE (Master Key 관리)
    • Enterprise Authentication
    • Enterprise Firewall
    • Enterprise Monitor
    • Enterprise Backup
    • MySQL 기술 지원

MySQL 설치

MySQL 서버의 다양한 설치 방법 중에서 운영체제별로 설치 프로그램을 이용하는 방법 위주로 살펴본다.

리눅스 서버의 Yum 인스톨러 설치

리눅스 서버에서는 Yum 인스톨러나 RPM 설치를 하더라도 MySQL 서버를 바로 시작할 수 있는 준비가 되지는 않는다.

💡 리눅스 운영체제에서 MySQL 서버의 설정 파일을 비롯해 MySQL 서버를 시작, 종료하는 방법은 다음 글에서 다룬다.

  • Yum 인스톨러를 이용하려면 MySQL 소프트웨어 리포지토리(Repository)를 등록해야 한다.
    • MySQL 다운로드 페이지에서 RPM 설치 파일을 직접 받아서 설치
    1. 각 운영체제 버전에 맞는 RPM 파일을 다운로드한다.

    2. MySQL 서버를 설치하고자 하는 리눅스 서버에서 Yum 리포지토리 정보를 등록한다.

      sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
    3. Yum 리포지토리가 등록되면 다음과 같이 MySQL 설치용 RPM 파일들이 저장된 경로를 가진 파일이 생성된 것을 확인할 수 있다.

      ls -alh /etc/yum.repos.d/*mysql*
  • Yum 인스톨러 명령을 이용해 버전별로 설치 가능한 MySQL 소프트웨어 목록을 확인할 수 있다.
    • MySQL 서버를 설치하는 과정에서 리눅스 서버의 관리자만 접근할 수 있는 디렉터리에 파일들을 복사하기 때문에 반드시 root 권한이 필요하다.

    • 만약 현재 사용자가 root가 아니라면 sudo 명령을 yum 명령과 함께 사용해야 한다.

      # 어떤 RPM 패키지가 있는지 확인할 수 있다.
      sudo yum search mysql-community
      
      # 설치 가능한 모든 버전을 확인
      sudo yum --showdulicates list
  • yum install 명령어로 MySQL 8.0.20을 설치한다.
    • 설치하고자 하는 버전을 패키지 이름 뒤에 ‘-’로 구분해서 입력하면 된다.

      sudo yum install mysql-community-server-8.0.21

리눅스 서버에서 Yum 인스톨러 없이 RPM 파일로 설치

  • Yum 인스톨러를 사용하지 않고 RPM 패키지로 직접 설치하려면 설치에 필요한 RPM 패키지 파일들을 직접 다운로드해야 한다.
    1. MySQL RPM 다운로드 페이지에서 운영체제의 버전과 CPU 아키텍처를 선택한 후 RPM 패키지 파일을 다운로드 한다.

    2. RPM 패키지 파일들을 의존 관계 순서대로 설치한다.

      # 설치 명령어
      rpm -Uvh mysql-community-devel-8.0.21-1.el7.x86_64.rpm
  • RPM 패키지 파일들의 의존 관계 순서
    • Development Libraries 패키지는 C/C++ 언어로 MySQL 서버에 접속하는 프로그램을 개발하고 빌드할 때 필요한 파일들을 담고 있으므로 굳이 필요치 않다면 설치하지 않아도 된다.

      RPM 패키지RPM 파일명의존 관계 순서
      Development Librariesmysql-community-devel1
      Shared Librariesmysql-community-libs2
      Comatibility Librariesmysql-community-libs-compat3
      MySQL Configurationmysql-community-common4
      MySQL Servermysql-community-server5
      Client Utilitiesmysql-community-client6

macOS용 DMG 패키지 설치

  • macOS에서 인스톨러로 설치하려면 설치에 필요한 DMG 패키지 파일들을 직접 다운로드해야 한다.
    1. MySQL 다운로드 페이지에서 운영체제의 버전을 선택 후 DMG 패키지 파일을 다운로드
    2. 다운로드한 DMG 파일을 실행하면 패키지 실행 화면이 나타난다.
    3. 패키지 파일을 더블클릭해서 설치를 진행하면 설치 옵션을 변경하는 화면이 나타난다.
    4. 설치가 완료되면 MySQL 서버가 자동으로 실행된다.
  • 설치 옵션 중 사용자 인증 방식
    • Use Strong Password Encryption은 Caching SHA-2 Authentication 방식을 사용한다.
    • Use Legacy Password Encryption은 Native Authentication 방식을 사용한다.
    • 인터넷을 경유해서 MySQL 서버에 접속하게 된다면 Use Strong Password Encryption를 선택한다.
    • MySQL 서버를 사설 네트워크에서만 사용한다면 Use Legacy Password Encryption를 선택해도 괜찮다.
  • MySQL 서버를 설치할 때 기본 설정으로 설치하면 관리자 계정에 대한 비밀번호 설정이 필요하다.
    • 데이터 디렉터리와 로그 파일들을 /usr/local/mysql 디렉터리 하위에 생성하고 관리자 모드로 MySQL 서버 프로세스를 가동하기 때문이다.
  • MySQL 서버가 설치된 디렉터리는 /usr/local/mysql 이며, 하위의 각 디렉터리 정보는 다음과 같다.
    • 다음 디렉터리들은 절대 삭제하면 안 되는 디렉터리들이다.
    • bin: MySQL 서버와 클라이언트 프로그램, 유틸리티를 위한 디렉터리
    • data: 로그 파일과 데이터 파일들이 저장되는 디렉터리
    • include: C/C++ 헤더 파일들이 저장된 디렉터리
    • lib: 라이브러리 파일들이 저장된 디렉터리
    • share: 다양한 지원 파일들이 저장돼 있으며, 에러 메시지나 샘플 설정 파일(my.cnf)이 있는 디렉터리

윈도우 MSI 인스톨러 설치

  • 윈도우에서 인스톨러로 MySQL 서버를 설치하려면 설치에 필요한 윈도우 인스톨 프로그램을 직접 다운로드 해야 한다.
    1. MySQL 다운로드 페이지에서 운영체제의 버전을 선택하면 MSI 설치 프로그램을 다운로드할 수 있는 링크를 제공한다.
    2. 해당 링크를 클릭해 MSI 인스톨 프로그램을 다운로드 한다.
    3. 다운로드된 MSI 인스톨러 파일을 실행한다.

MSI 인스톨러 파일 실행 시

  • 설치 유형
    • Developer Default: MySQL 서버와 클라이언트 도구, 그리고 MySQL Workbench 같은 GUI 클라이언트 도구가 모두 설치된다.
    • Custom: 꼭 필요한 소프트웨어만 설치한다. (MySQL 서버, MySQL shell, MySQL Router)
  • MySQL 서버의 고가용성 옵션
    • Standalone MySQL Server / Classic MySQL Replication 옵션: 복제 없이 단일 서버 실행 모드
  • MySQL 서버 접속 방식
    • Config Type을 Development Computer 옵션으로 선택하면, MySQL 서버가 허용하는 커넥션의 개수를 적게 설정하게 된다.
    • 서비스용 MySQL 서버를 설치한다면 그에 맞게 옵션을 변경해야 한다.
    • Connectivity 옵션은 일반적으로 많이 사용되는 TCP/IP로 선택하고, Port는 기본 포트 그대로 유지한다.
  • 사용자 로그인 시점에 사용할 비밀번호 인증 방식
    • Strong Password Encryption: Caching SHA-2 Authentication 플러그인을 사용
    • Legacy Authentication Method: Native Authentication 플러그인을 사용
  • MySQL 서버의 관리자 계정(root 계정)의 비밀번호 입력
    • 필요 시 ‘Add User’ 버튼으로 추가 계정을 더 등록할 수 있다.
  • MySQL Router의 옵션을 설정하는 화면은 취소하고 다음으로 넘어간다.

macOS에 설치된 MySQL 시작과 종료

  • ‘시스템 환경설정’의 최하단에 있는 ‘MySQL’을 클릭하면 MySQL 관리 프로그램이 실행된다.
  • MySQL 서버 관리 프로그램에서 MySQL 서버의 설정 파일(my.cnf) 등록 및 시작과 종료를 수행할 수 있다.
    • MySQL 서버의 설정 파일(Configuration File)은 아직 준비돼 있지 않기 때문에, 등록해줘야 한다.
    1. /usr/local/mysql 디렉터리에 ‘my.cnf’ 라는 빈 파일 생성
    2. MySQL 서버 관리 프로그램 > 설정 파일(Configuration File) 항목에 /usr/local/mysql/my.cnf 입력
    3. Apply 버튼을 클릭해서 MySQL 설정 파일 등록
    • 설정 파일의 경로는 반드시 기억해 두도록 한다.
  • 혹은 macOS의 터미널에서 다음 명령으로 MySQL 서버를 실행하거나 종료할 수 있다.
    ## MySQL 서버 시작
    sudo /usr/local/mysql/support-files/mysql.server start
    
    ## MtSQL 서버 종료
    sudo /usr/local/mysql/support-files/mysql.server stop

윈도우에 설치된 MySQL 시작과 종료

  • 윈도우 서비스 화면에서 'MySQL80’ 서비스의 등록 정보를 통해 MySQL 서버의 프로그램과 설정 파일(my.ini)의 위치를 확인할 수 있다.
  • MySQL 설정 파일 위치
    • 윈도우 서비스의 'MySQL80’ 서비스 속성에서 --defaults-file 옵션에 지정된 파일로 확인할 수 있다.
    • 기본 파일 경로: C:\ProgramData\MySQL\MySQL Server 8.0\Data\my.ini
  • MySQL 서버의 설치 디렉터리
    소프트웨어설치 디렉터리
    MySQL ServerC:\Program Files\MySQL\MySQL Server 8.0
    MySQL ShellC:\Program Files\MySQL\MySQL Shell 8.0
    MySQL RouterC:\Program Files\MySQL\MySQL Router 8.0
  • MySQL 서버 디렉터리의 구조
    • 다음 디렉터리들이 삭제되면 MySQL 서버가 정상적으로 실행되지 않을 수 있다.
    • bin: MySQL 서버와 클라이언트 프로그램, 유틸리티를 위한 디렉터리
    • include: C/C++ 헤더 파일들이 저장된 디렉터리
    • lib: 라이브러리 파일들이 저장된 디렉터리
    • share: 다양한 지원 파일들이 저장돼 있으며, 에러 메시지나 샘플 설정 파일(my.cnf)이 있는 디렉터리

Reference

참고 서적

📔 Real MySQL 8.0

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글