Real MySQL 8.0을 공부하며 첫 단계인 MySQL 설치 방법에 대해 정리하려 합니다. 책에서는 간단하게 UI를 통해 설치하는 방법에 대해 자세히 나와 있어 Linux환경에서 커뮤니티 버전을 Binary 파일을 이용하여 설치하는 방법에 대해 정리했습니다.

설치 방법

  1. Binary 설치 파일 다운로드
    # 다운로드 할 경로에 접근
    $ cd /usr/local
    # binary 파일 다운로드 (8.0.21 버전)
    $ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
    # 다운로드 파일 확인
    $ ll mysql-8.0*
    -rw-r--r-- 1 root root 347814208 Jun 17  2020 mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
    
  2. 압축 해제 및 보안을 위한 OS 계정, 그룹 추가
    # tar 명령어를 사용하여 압축해제
    $ tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
    # mysql 그룹 & USER 그룹 추가
    $ groupadd mysql
    $ useradd -r -g mysql -s /bin/false mysql
    > **옵션 의미**
    > -r: 시스템 계정 생성 , -g: 세로운 그룹명  -s 새로운 계정의 로그인 Shell
    > /bin/false: FTP접속 불가, SSH 접속불가
    > **mysql 계정 생성 이유**
    > EC2에 있는 DB 데이터에 불특정 OS계정이 접근하지 못하도록 별도의 계정을 생성하여 보안적으로 관리하기 위함입니다.
    # Soft Link 연결
    $ ln -s mysql-8.0.21-linux-glibc2.12-x86_64 mysql
    
  3. MySQL 서버 디렉토리 경로 설정 (Config 정리)
    ## config 파일 생성
    $ vi /etc/my.cnf
    [mysqld]
    user=mysql
    basedir=/usr/local/mysql
    datadir=/data/mysql
    socket=/data/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    #replication
    log-bin=/bin_log/mysql-bin
    server-id=1
    #character_set
    collation-server = utf8mb4_unicode_ci
    character-set-server = utf8mb4
    skip-character-set-client-handshake
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/mysql_data/mysql.pid
    [client]
    socket=/data/mysql.sock
    # include all files from the config directory
    !includedir /etc/my.cnf.d
    
  4. Config 경로 생성
    # Data 디렉토리 (/data/mysql)
    $ mkdir -p /data/mysql
    $ chown -R mysql.mysql /data 
    # pid 디렉토리 (/mysql_data)
    $ mkdir -p /mysql_data
    $ chown mysql.mysql /mysql_data 
    # Bin_log 디렉토리 (/data/bin_log)
    $ mkdir -p /bin_log
    $ chown -R mysql:mysql /bin_log
    
  5. MySQL 설치 & 기동
    #설치파일 경로 접속
    $ cd /usr/local/mysql
    #Mysql Install (Config 파일 미세팅 시, 경로 지정 옵션 필요)
    $ /usr/local/mysql/bin/mysqld --initialize-insecure
    #MySQL 기동
    $ /usr/local/mysql/bin/mysqld_safe &
    

    [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the –initialize-insecure option

    • –initialize-insecure 옵션으로 Root 계정이 비밀번호가 없어, 보안 상 경고가 나오지만, 비밀번호는 차후에 생성 예정
  6. MySQL 명령어 설정 & 접속
    # Mysql 명령어를 Location 관계없이 사용할 수 있도록 설정
    $ sudo vi /etc/profile
    # 맨 하단으로 이동하여 아래 내용 추가
    export DB_HOME=/usr/local/mysql
    export PATH="$PATH:/usr/local/mysql/bin" 
    # 해당 내용 저장 후 아래 명령어 실행
    $ source /etc/profile
    # Mysql 접속
    mysql -uroot
    

    접속 에러 발생 시 해결 방법

    1. error while loading shared libraries: libncurses.so.5
    2. error while loading shared libraries: libtinfo.so.5
      # 에러메시지에 출력된 파일 형식과 다른 버전이 있는지 탐색
      $ cd /
      $ find | grep libtinfo
      # Soft Link를 통해 해당 에러메시지 파일 대신 결과로 도출된 파일 바라보도록 설정
      ## 결과창에 다음과 같은 경로로 나왔다고 가정 (/usr/lib64/libtinfo.so.6)
      $ ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5 
      $ ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
      
  7. root 비밀번호 설정
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[비밀번호]';
    Query OK, 0 rows affected (0.00 sec)