CentOS 7.9에 MySQL 8.x 설치하기

    반응형

    오랫만에 CentOS와 MySQL을 만져본다. 주로 Ubuntu와 MariaDB를 사용하곤 했는데 이번 테스트는 CentOS와 MySQL 환경에서 진행해야 하기에 오랫만에 운영체제를 바꿔본다.

     

    CentOS의 설치는 버전에 무관하게 설치과정이 비슷하니 생략하고 MySQL 8.x의 설치 과정을 포스팅한다.

     

    CentOS 7.9를 설치하고 yum 명령으로 기본 리포지토리에서 MySQL을 설치하면 5.6 버전이 기본으로 설치된다. 하지만 최신 버전은 8.0.x 버전이다. 따라서 설치용 rpm 파일을 다운로드 받아 설치하거나 Source Code를 다운받아 직접 빌드해야 한다.

    MySQL 8.0 설치를 위한 리포지토리 등록

    먼저 CentOS 7.9의 커널버전과 이미 MySQL이 설치되어 있지는 않은지 확인한다. 아래 화면처럼 mysql 이라는 단어가 들어간 RPM이 보이지 않도록 한다.

    # uname -a 
    
    # rpm -qa | grep -i mysql

    리눅스 커널버전 확인 및 mysql 패키지 설치 여부 확인

     

    아래는 MySQL의 무료버전인 MySQL Community 버전을 다운로드 받을 수 있는 리포지토리 셋업 패키지가 있는 MySQL 개발자사이트다.

     

    방문 주소는  https://dev.mysql.com/downloads/repo/yum/ 이다. 

     

    MySQL Yum 리포지토리 셋업 패키지

     

    위 리포지토리 셋업 패키지 중에서 Red Hat Enterprise Linux 7 / Oracle Linux 7 의 RPM 패키지를 다운로드 받으면 된다. CentOS 7은 RedHat 7과 99% 동일하다.

     

    "Download" 버튼을 클릭하면 다음 화면처럼 로그인을 하거나 가입을 하라고 뜨는데... 아래쪽에 있는 No thanks, just start my download. 링크를 클릭하면 된다.

     

    My SQL Community Downloads

     

    그런데 rpm 파일을 다운로드 받고 다시 서버에 업로드하고 하는 과정이 귀찮으니까... 링크에서 마우스 우클릭을 통해 링크 주소만 클립보드에 복사한다.

     

    그리고 서버에서 다음 명령어를 통해 셋업 패키지(rpm)을 바로 설치한다. yum 명령어에 RPM 파일이 올라가 있는 URL을 지정해주면 다운로드와 설치가 한꺼번에 진행된다. yum 명령어에 이런 기능이 언제 추가되었을까? 너무 오랫동안 CentOS를 멀리한 탓에 나만 몰랐던 걸까?

    # yum install  -y  [복사한 URL]

    yum 리포지토리 셋업 파일 설치

     

    MySQL 8.0 설치

    리포지토리 셋업 RPM을 설하고 나면 yum 명령어를 통해 일반적인 설치 과정을 진행하면 된다.

    # yum install -y mysql-server

    mysql-server 설치

     

    디펜던시가 있는 파일들을 포함해 자동으로 설치가 완료된다. 

     

    mysql-server 설치 완료

     

    설치가 완료되면 mysqld 서비스를 재기동 한다.

    # systemctl start mysqld

    mysql 서버 재기동

     

    MySQL 8.0 부터는 MySQL의 관리자 계정 비밀번호를 초기화하는 방법도 달라졌다. MySQL 서버가 최초로 실행될 때 기본 관리자 계정인 root 계정의 임시 비밀번호가 생성되는데, 특이하게도 MySQL 서버의 로그파일에 임시 비밀번호가 저장된다. 다음의 명령어를 통해 MySQL 관리자의 root 계정 임시 비밀번호를 확인할 수 있다.

    # grep "temporary password" /var/log/mysqld.log

    MySQL 관리자 계정 root의 임시 비밀번호

     

    root 계정의 임시 비밀번호를 사용해 접속한다.

    # mysql -u root -p

    mysql client로 서버 접속

     

    하지만 임시 비밀번호로 접속한 경우 아래 화면처럼 MySQL의 관리자 권한을 사용할 수 없다. 비밀번호를 변경해줘야만 온전한 MySQL 관리자 권한을 사용할 수 있다.

     

    임시 비밀번호 사용 시 관리자 권한 에러

     

    alter 명령어를 통해 root@localhost 계정의 임시 비밀번호를 변경해준다. 복잡도 설정이 되어 있어 꽤 복잡한 비밀번호를 만들어줘야 한다.

    mysql> alter user 'root'@'localhost' identified by '신규비밀번호';

    root@localhost 계정의 비밀번호 변경

     

    원격에서 접속 가능한 새로운 MySQL 관리자 계정 만들기

    그리고 root@localhost 이외에 개인적으로 사용할 관리자 계정을 하나 더 만든다. 그리고 이 계정은 원격에서 접속할 수 있도록 IP 제한을 해제한다. 

    mysql> create user 'taeho'@'%' identified by '신규비밀번호';
    
    mysql> grant all privileges on *.* to 'taeho'@'%';
    
    mysql > flush privileges;

    원격접속이 가능한 새로운 MySQL 관리자 계정 만들기

     

    % 는 IP 제한없는 모든 원격지 IP를 의미하며 *.* 은 모든 DB와 모든 DB내 모든 객체를 의미한다. 즉 MySQL DBMS 전체의 접근권한을 갖는 관리자 권한을 부여함을 의미한다.

     

    그리고 세번 째 줄을 반드시 입력해야 한다. 그래야만 생성하고 권한을 부여한 계정정보가 반영된다.

     

    하지만 이렇게 한다고 해서 MySQL DBMS에 원격접속을 할 수 있는 것은 아니다. 다음과 같이 my.cnf 라는 MySQL DBMS의 설정파일에서 외부로부터 접속을 허용할 IP 주소에 IP를 넣어줘야 한다. 외부의 모든 IP에서 접속을 허용하기 위해서는 다음과 같이 IP 주소를 설정해줘야 한다.

    bind-address = 0.0.0.0

    MySQL DBMS의 외부접속 허용

     

    이 옵션은 [mysqld] 섹션에 설정해주면 된다.

    그리고 systemctl 명령을 통해 mysqld 서버를 재실행해준다.

    # systemctl restart mysqld

    MySQL DBMS 재실행

     

    MySQL DBMS 서버가 외부에서 접속을 받아들일 준비가 되었다면 다음과 같이 TCP/3306에서 Listen하고 있는 것을 볼 수 있다.

    외부접속 대기중인 MySQL DBMS (TCP/3306)

     

    하지만 이렇게 설정을 모두 완료해도 IPTable 정책에 의해 TCP/3306의 외부 접속이 차단될 수 있다. 그런 경우 다음 명령을 통해 IPTable 정책을 모두 삭제하거나 TCP/3306만 접속을 허용하도록 정책을 추가해줘야 한다. 여기서는 IPTable 정책을 모두 삭제하는 방법만 소개한다.

     

    # iptables -F

     

    여기까지 완료했다면 원격에서 MySQL DBMS에 접속할 수 있다.

     

    DBeaver를 통해 MySQL  DBMS 원격접속하기

    다음과 같이 DBeaver 를 통해 접속하는 사례를 예로 든다.  DBeaver의 메인화면의 Database Navigator 창에서 마우스 우클릭으로 팝업 메뉴를 호출한 다음 "Create" - "Connection" 메뉴를 선택한다.

     

    DBeaver의 새 커넥션 만들기

     

    다음 창에서는 MySQL을 선택한다.

     

    DBMS 종류는 MySQL

     

    Server Host에는 MySQL DBMS가 설치된 서버의 IP를 넣어주고 Database는 비워둔다. Database를 비워둬도 되는 이유는 접속하는데 사용할 계정이 MySQL의 최고 관리자 계정이기 때문이다. 만약 특정 DB에만 접속할 수 있도록 권한이 제한된 일반 사용자 계정이라면 DB명을 적어주어야 한다. 그리고 아래에 ID와 비밀번호를 입력한다.

     

    MySQL 접속정보 입력

     

    이렇게 새로운 커넥션을 만든 다음 접속을 시도하면 접속이 되어야 하지만... 필자의 경우 에러가 발생했다.

    Public Key Retrieval is not allowed

    MySQL 접속 에러

     

    이 에러는 SSL 암호화 접속 시 인증키를 가져오지 못해 발생하는 에러로 보인다. 다음과 같이 "Driver Properties"에서 해당 옵션을 True로 변경해주면 된다. 이 메뉴는 "Edit Connection" 메뉴에서 진입한다.

    Edit Connection - Driver Properties - allowPublicKeyRetrieval : TRUE

    allowPublicKeyRetrieval 옵션

     

    이 옵션을 변경하고 나니 정상적으로 접속이 가능하고 작업이 가능했다.

     

    MySQL DBMS 접속 후 계정 정보조회 화면

     

    #CentOS7.9에MySQL8설치

    댓글(0)

    Designed by JB FACTORY