Compute Engine에 MySQL 설치


만든 Compute Engine 인스턴스에 MySQL을 수동으로 설치하려면 다음 단계를 완료하세요.

Compute Engine에서 MySQL을 설정하는 여러 옵션에 관한 개요는 Compute Engine의 MySQL을 참고하세요. MySQL에 적합한 Compute Engine 제품을 알아보려면 Compute Engine에서 MySQL 구성을 참고하세요.

시작하기 전에

  • Google Cloud 콘솔을 사용하여 Compute Engine API를 사용 설정합니다.
  • Google Cloud CLI 설치
  • 작업공간을 구성하여 명령을 간결하게 만듭니다. 다음 명령어에서 PROJECT_ID, REGION, ZONE을 프로젝트 값으로 바꿉니다. 영역의 전체 목록은 사용 가능한 리전 및 영역을 참조하세요.

    gcloud config set project PROJECT_ID
    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

Compute Engine 인스턴스 만들기 및 SSH 연결 설정

MySQL에 사용할 Compute Engine 인스턴스를 만들고 새로 생성된 인스턴스에 대한 SSH 연결을 설정합니다. 기본 운영체제는 Debian 버전 10입니다. 이 튜토리얼에 다른 운영체제를 사용하려면 Compute Engine 문서의 공개 이미지 페이지에 설명된 옵션 중에서 선택하면 됩니다.

콘솔

Compute Engine 인스턴스 만들기

Google Cloud console에서 Compute Engine 인스턴스를 만들려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Compute Engine VM 인스턴스 페이지로 이동합니다.

    Compute Engine VM 인스턴스로 이동

  2. 새로 생성된 프로젝트를 선택하고 계속을 클릭합니다.

  3. 인스턴스 만들기(기존 인스턴스가 있으면 새 인스턴스)를 클릭합니다. 인스턴스 이름을 mysql-test로 지정합니다.

  4. 성능 수준을 선택하고 디스크 크기를 지정합니다.

  5. 기본값 이외의 다른 운영체제를 지정하려면 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크의 속성을 구성합니다. 공개 이미지 탭에서 운영체제를 선택한 후 저장을 클릭합니다.

  6. 보안 권장사항을 준수하려면 외부 IP 주소를 사용하지 않고 인스턴스를 만듭니다.

    고급 옵션을 펼치고 네트워킹을 펼칩니다. 네트워크 인터페이스에서 기본 인터페이스를 펼치고 외부 IPv4 주소 메뉴에서 없음을 선택합니다.

  7. 만들기를 클릭합니다.

네트워크 주소 변환 설정

Cloud NAT를 사용하여 네트워크 주소 변환을 설정하고 관리하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Cloud NAT 페이지로 이동합니다.

    Cloud NAT로 이동

  2. 시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.

  3. 게이트웨이 이름nat-simple-configuration을 입력합니다.

  4. Cloud Router를 선택하려면 Cloud Router 선택 섹션에서 다음을 수행합니다.

    1. 네트워크에서 default를 선택합니다.
    2. 리전에서 VM에 지정한 리전을 선택합니다.
    3. Cloud Router에서 새 라우터 만들기를 선택합니다.

      라우터 만들기 대화상자가 표시되면 라우터의 이름(예: nat-router-simple-configuration)을 입력하고 만들기를 클릭합니다.

  5. 고급 구성을 클릭합니다.

  6. Logging 섹션에서 변환 및 오류를 선택합니다. 이 설정은 모든 로그를 Cloud Logging으로 전송하도록 Cloud NAT를 구성합니다.

  7. 만들기를 클릭합니다.

클라이언트 VM에 SSH 연결 설정

SSH 연결을 설정하려면 다음을 수행합니다.

  1. VM 인스턴스 페이지의 목록에서 새 VM 인스턴스를 찾습니다.

  2. 해당 VM의 연결 열에서 SSH를 클릭합니다. SSH 터미널이 브라우저 창에 열립니다.

gcloud

  1. Compute Engine 인스턴스를 만들려면 gcloud compute instances create 명령어를 사용합니다. 운영체제를 지정하려면 --image-family 매개변수를 이미지 계열 앞에 또는 --image 매개변수를 특정 이미지의 이미지 이름 앞에 추가합니다. 예를 들어 Debian 10 계열의 최신 이미지를 사용하려면 --image-family debian-10을 추가합니다. 공개 이미지를 사용할 경우 --image-project 매개변수를 사용하여 이미지 프로젝트를 제공해야 합니다.

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. Cloud Router를 만듭니다.

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Cloud NAT를 사용하여 네트워크 주소 변환을 설정하고 관리합니다.

    gcloud compute routers nats create nat-simple-configuration \
        --router=nat-router-simple-configuration \
        --auto-allocate-nat-external-ips \
        --nat-all-subnet-ip-ranges \
        --enable-logging
    
  4. ssh를 사용하여 인스턴스에 연결합니다.

    gcloud compute ssh \
        --tunnel-through-iap \
        mysql-test
    

    SSH 연결은 IAP(Identity-Aware Proxy)에서 처리되는 TCP 전달을 사용하여 설정됩니다.

MySQL 설치

다음 단계에서는 Compute Engine 인스턴스에 MySQL을 설치하는 방법을 설명합니다.

Debian 10 이상

이 안내에서는 MySQL 8 또는 5.7을 설치합니다.

Debian 버전 10 이상에서는 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB가 포함됩니다. MariaDB는 MySQL 프로토콜과의 호환성을 유지하지만 독립적으로 진화하는 특성 세트가 있습니다. 자세한 내용은 MariaDB와 MySQL 비교를 참고하세요.

MySQL을 설치하려면 출시 패키지를 다운로드하고 dpkg 명령어를 사용하여 수동으로 설치합니다.

  1. wget 종속 항목을 설치합니다.

    sudo apt-get install -y wget
    
  2. MySQL Community Server 출시 패키지를 다운로드합니다.

    export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  3. 출시 패키지 파일의 무결성을 확인합니다.

    cat > ${DEB_FILE}.md5 << EOL
    799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. 파일을 확인한 후 MySQL 패키지를 로컬 패키지 저장소에 추가합니다.

    sudo dpkg -i ${DEB_FILE}
    

    MySQL 버전을 포함한 설치 옵션을 확인하라는 메시지가 표시됩니다.

  5. 상단의 MySQL 서버 및 클러스터 메뉴 옵션을 선택한 상태에서 Return 키를 누른 후 화살표 키를 사용하여 서버 버전을 선택합니다.

    이 가이드에서는 MySQL 8.0 또는 5.7을 선택해야 합니다. 버전을 ��택�� 후 키��������� Return 키를 누���니다.

  6. 구성 메뉴에서 선택한 옵션에 만족하면 화살표 키를 사용하여 메뉴에서 Ok를 선택하고 키보드의 Return 키를 누릅니다.

  7. 패키지 캐시를 업데이트합니다.

    sudo apt-get update
    

    공개 키를 사용할 수 없으므로 서명 NO_PUBKEY 467B942D3A79BD29를 확인할 수 없습니다와 비슷한 GPG 오류 메시지가 표시되면 다음 패턴을 따르는 명령어를 사용하여 누락된 GPG 키를 가져옵니다.

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    데모 오류 메시지에서 누락된 공개 키는 467B942D3A79BD29이며 --recv-keys 옵션과 함께 이 값을 제공합니다.

    패키지 캐시를 업데이트하려면 다음 명령어를 반복합니다.

  8. MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.

    sudo apt-get -y install mysql-community-server
    

    루트 비밀번호와 같은 설치에 대한 세부정보를 제공하라는 메시지가 표시됩니다.

Debian 9

이 안내에서는 MySQL 8 또는 5.7을 설치합니다.

기본적으로 일부 Debian 버전(예: Debian 9)에서는 MariaDB를 기본 MySQL 서버로 설치합니다. MariaDB는 대부분 MySQL과 호환되며 같은 명령어로 호출될 수 있습니다. MariaDB와 표준 MySQL의 차이에 대한 자세한 내용은 MySQL에서 Debian 9의 MariaDB로 이동을 참조하세요.

MySQL을 설치하려면 다음 안내를 수행합니다.

  1. MySQL Community Server 출시 패키지를 다운로드합니다.

    export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  2. 출시 패키지 파일의 무결성을 확인합니다.

    cat > ${DEB_FILE}.md5 << EOL
    9e393c991311ead61dcc8313aab8e230 ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. 파일을 확인한 후 MySQL 패키지를 로컬 패키지 저장소에 추가합니다.

    sudo dpkg -i ${DEB_FILE}
    

    MySQL 버전을 포함한 설치 옵션을 확인하라는 메시지가 표시됩니다.

  4. 상단의 MySQL 서버 및 클러스터 메뉴 옵션을 선택한 상태에서 Return 키를 누른 후 화살표 키를 사용하여 서버 버전을 선택합니다.

    이 가이드에서는 MySQL 8.0 또는 5.7을 선택해야 합니다. 버전을 선택한 후 키보드의 Return 키를 누릅니다.

  5. 구성 메뉴에서 선택한 옵션에 만족하면 화살표 키를 사용하여 메뉴에서 Ok를 선택하고 키보드의 Return 키를 누릅니다.

  6. 패키지 캐시를 업데이트합니다.

    sudo apt-get update
    

    공개 키를 사용할 수 없으므로 서명 NO_PUBKEY 467B942D3A79BD29를 확인할 수 없습니다와 비슷한 GPG 오류 메시지가 표시되면 다음 패턴을 따르는 명령어를 사용하여 누락된 GPG 키를 가져옵니다.

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    데모 오류 메시지에서 누락된 공개 키는 467B942D3A79BD29이며 --recv-keys 옵션과 함께 이 값을 제공합니다.

    패키지 캐시를 업데이트하려면 다음 명령어를 반복합니다.

  7. MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.

    sudo apt-get -y install mysql-community-server
    

Ubuntu

Ubuntu 1804 이하의 경우 이 안내에서는 MySQL 5.7을 설치합니다.
Ubuntu 2004 이상의 경우 이 안내에서는 MySQL 8을 설치합니다.

  1. apt-get 패키지 관리자를 업데이트합니다.

    sudo apt-get update
    
  2. MySQL을 설치합니다. 설치 과정에서 MySQL 서비스가 자동으로 시작됩니다.

    sudo apt-get -y install mysql-server
    
  3. 기본적으로 Ubuntu 배포판에서 mysql은 auth_socket 플러그인을 사용하여 root 사용자를 인증합니다. 이 쿼리를 실행하여 이 기본 구성을 확인합니다.

    echo "SELECT user, authentication_string, plugin, host
            FROM mysql.user WHERE user='root' ;" \
         | sudo mysql -t -u root
    

    출력���는 localhost에서 연결하는 root 사용자가 auth_socket 플러그인을 사용하는 것으로 표시됩니다.

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. 이 설정을 변경하고 루트 비밀번호를 추측하기 어려운 비밀번호로 변경합니다.

    export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD"
    echo "ALTER USER 'root'@'localhost'
          IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \
          | sudo mysql -u root
    

    출력에 새 루트 비밀번호가 포함됩니다.

    Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
    

CentOS 또는 RHEL 7

이 안내에서는 MySQL 8을 설치합니다.

CentOS 및 RHEL의 버전 7에서는 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB가 포함됩니다. MySQL을 설치하려면 먼저 패키지 관리자를 업데이트해야 합니다.

  1. MySQL Community Server 출시 패키지를 다운로드합니다.

    export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 출시 패키지 파일의 무결성을 확인합니다.

    cat > ${RPM_FILE}.md5 << EOL
    8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. MySQL을 포함하도록 패키지 관리자를 업데이트합니다.

    sudo rpm -Uvh ${RPM_FILE}
    
  4. MySQL을 설치합니다.

    sudo yum -y install mysql-community-server
    
  5. MySQL 서버를 시작합니다.

    sudo /usr/bin/systemctl start mysqld
    
  6. 서버 로그에서 임시 루트 비밀번호를 가져옵니다.

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Rocky Linux 또는 RHEL 8

이 안내에서는 MySQL 8을 설치합니다.

Rocky Linux, CentOS Stream, RHEL의 버전 8은 패키지 관리 시스템의 일부로 MySQL 대신 MariaDB를 포함합니다. MySQL을 설치하려면 먼저 패키지 관리자를 업데이트해야 합니다.

  1. MySQL Community Server 출시 패키지를 다운로드합니다.

    export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 출시 패키지 파일의 무결성을 확인합니다.

    cat > ${RPM_FILE}.md5 << EOL
    0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    다음 출력이 표시되면 파일의 신뢰성 및 무결성이 확인된 것입니다.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. MySQL을 포함하도록 패키지 관리자를 업데이트합니다.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. MySQL을 설치합니다. 설치에서 커뮤니티 서버를 사용하도록 설치 중에 AppStream 저장소를 중지합니다.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. MySQL 서버를 시작합니다.

    sudo /usr/bin/systemctl start mysqld
    
  6. 서버 로그에서 임시 루트 비밀번호를 가져옵니다.

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

MySQL 설치 보안 강화

MySQL 설치 보안을 강화하려면 mysql_secure_installation 명령어를 실행합니다. 설치 과정 중에 비밀번호를 설정하지 않은 경우 이 단계에서 비밀번호를 만듭니다. 이 명령어에 대한 자세한 내용은 MySQL 문서에서 mysql_secure_installation 부분을 참조하세요.

sudo mysql_secure_installation

MySQL에 연결

다음 ���계에서는 mysql-test 인스턴스에서 MySQL에 연결하는 방법을 설명합니다.

MySQL 8.0

  1. MySQL 클라이언트를 사용하여 MySQL에 연결합니다.

    sudo mysql -u root -p
    

    MySQL에 연결하면 mysql>로 변경하라는 메시지가 표시됩니다.

    이제 MySQL 명령어를 실행할 수 있습니다. 예를 들어 다음 명령어는 실행 중인 스레드 및 현재 연결을 보여줍니다.

    mysql> SHOW processlist;
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    | Id | User            | Host      | db   | Command | Time | State                  | Info             |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    |  5 | event_scheduler | localhost | NULL | Daemon  | 1889 | Waiting on empty queue | NULL             |
    | 14 | root            | localhost | NULL | Query   |    0 | init                   | show processlist |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    2 rows in set (0.00 sec)

    다음 명령어를 사용하여 사용자 목록을 생성할 수 있습니다.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +------------------+-----------+------------------------------------------------------------------------+
    | User             | Host      | authentication_string                                                  |
    +------------------+-----------+------------------------------------------------------------------------+
    | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | root             | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B            |
    +------------------+-----------+------------------------------------------------------------------------+
    4 rows in set (0.00 sec)
  2. 명령어 실행이 완료되었으면 exit 명령어를 사용하여 MySQL 클라이언트를 종료한 후 exit를 다시 사용하여 Compute Engine 인스턴스에서 로그아웃합니다.

    mysql> exit
    Bye

MySQL 5.7

  1. MySQL 클라이언트를 사용하여 MySQL에 연결합니다.

    sudo mysql -u root -p
    

    MySQL에 연결하면 mysql>로 변경하라는 메시지가 표시됩니다.

    이제 MySQL 명령어를 실행할 수 있습니다. 예를 들어 다음 명령어는 실행 중인 스레드 및 현재 연결을 보여줍니다.

    mysql> SHOW processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    | 51 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    1 row in set (0.00 sec)

    다음 명령어를 사용하여 사용자 목록을 생성할 수 있습니다.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +---------------+-----------+-------------------------------------------+
    | User          | Host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  2. 명령어 실행이 완료되었으면 exit 명령어를 사용하여 MySQL 클라이언트를 종료한 후 exit를 다시 사용하여 Compute Engine 인스턴스에서 로그아웃합니다.

    mysql> exit
    Bye

다음 단계

  • MySQL에 대한 자세한 내용은 공식 MySQL 문서를 참조하세요.
  • MySQL을 사용하는 Cloud Marketplace의 다양한 개발 스택을 살펴보세요.
  • 고가용성 및 확장성이 필요한 경우 다음 옵션을 고려하세요.
    • 비공유 클러스터링 및 자동 샤딩을 통해 고가용성과 확장성을 제공하는 Compute Engine에 MySQL 클러스터를 설치합니다.
    • Cloud Marketplace에서 클릭 한 번으로 간편하게 배포할 수 있는 Percona는 MySQL 클러스터링을 위한 오픈소스 솔루션입니다.
    • 2011년부터 YouTube의 모든 데이터베이스 트래픽을 처리해 온 오픈소스 솔루션인 Vitess를 설치합니다. Vitess는 컨테이너에서 실행되는 애플리케이션에 적합합니다. 컨테이너화 환경에서 Vitess를 사용하는 방법에 대한 자세한 내용은 Kubernetes에서 Vitess 실행을 참고하세요.