Cara Menyiapkan MySQL di Google Compute Engine

Last reviewed 2021-11-23 UTC

Anda memiliki beberapa opsi untuk men-deploy MySQL sebagai bagian dari project Google Cloud. Anda dapat menggunakan Cloud SQL, Google Cloud Marketplace, atau menginstal MySQL secara manual di Compute Engine.

Cloud SQL menawarkan MySQL sebagai layanan web. Anda dapat menggunakan Cloud SQL untuk menghosting database MySQL di cloud Google, dan mengizinkan Google Cloud menangani tugas administratif seperti replikasi, pengelolaan patch, dan pengelolaan database.

Cloud Marketplace menyediakan antarmuka klik untuk deploy sederhana yang memudahkan penginstalan MySQL ke instance Compute Engine. Cloud Marketplace tidak hanya mencakup penginstalan MySQL mandiri, tetapi juga beberapa development stack web yang menggunakan MySQL, termasuk stack LAMP, stack LEMP, dan cluster Percona MySQL.

Jika lebih suka menginstal dan menyesuaikan MySQL secara manual, Anda dapat menggunakan Compute Engine untuk membuat database MySQL dalam hitungan menit. Dokumen ini memberikan panduan tentang opsi yang harus dipilih dan memandu penginstalan manual database MySQL di Compute Engine.

Cara memilih opsi deployment MySQL yang tepat

Cloud SQL adalah opsi yang tepat jika Anda menginginkan kemudahan agar Google Cloud menangani database backend dan tugas administrasi server. Misalnya, Cloud SQL menyediakan pencadangan otomatis dan pemulihan point-in-time. Selain itu, data Anda direplikasi di beberapa zona untuk ketersediaan dan ketahanan yang lebih besar.

Anda mungkin lebih suka menginstal MySQL di Compute Engine jika memerlukan fitur MySQL yang tidak didukung oleh Cloud SQL. Misalnya, Cloud SQL tidak mendukung fungsi yang ditentukan pengguna atau hak istimewa SUPER. Untuk informasi selengkapnya, lihat FAQ Cloud SQL.

Jika memutuskan untuk menginstal MySQL di Compute Engine, Anda dapat menggunakan Cloud Marketplace untuk men-deploy penginstalan MySQL, atau menginstal MySQL secara manual di instance Compute Engine. Cloud Marketplace menyediakan cara mudah untuk men-deploy MySQL sebagai bagian dari development stack yang lebih besar. Cloud Marketplace menawarkan beberapa opsi untuk penginstalan MySQL, termasuk penginstalan MySQL mandiri, stack LAMP, stack LEMP, Stack Nginx, penginstalan Cluster Percona MySQL, dan beberapa opsi lainnya.

Jika penawaran Cloud Marketplace tidak memenuhi kebutuhan Anda, Anda dapat menginstal MySQL secara manual di instance Compute Engine. Misalnya, Anda mungkin ingin men-deploy MySQL pada image kustom yang telah Anda buat, atau Anda mungkin ingin memiliki kontrol penuh atas proses penginstalan.

Untuk menginstal MySQL secara manual di instance Compute Engine, Anda hanya perlu membuat instance Compute Engine dan menginstal MySQL langsung ke instance.

Untuk informasi selengkapnya tentang setiap opsi, lihat referensi berikut:

Tujuan

  • Membuat instance Compute Engine
  • Menginstal MySQL
  • Terhubung ke MySQL

Prasyarat

  1. Buat project baru di Konsol Google Cloud. Anda dapat menggunakan project yang sudah ada, tetapi membuat project baru akan mempermudah pembersihan.

    Anda dapat menyelesaikan semua langkah dalam dokumen ini menggunakan Konsol Google Cloud. Namun, jika Anda lebih suka menggunakan gcloud CLI, ikuti langkah-langkah berikut untuk mengaktifkan Compute Engine API dan menginstal Google Cloud CLI.

  2. Gunakan konsol Google Cloud untuk mengaktifkan Compute Engine API.

  3. Instal gcloud CLI.

  4. Konfigurasikan ruang kerja Anda untuk membuat perintah tidak terlalu panjang. Ganti nilai project Anda untuk PROJECT_ID, REGION, dan ZONE dalam perintah berikut. Untuk mengetahui daftar lengkap zona, lihat Region & zona yang tersedia.

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

Membuat instance Compute Engine

Buat instance Compute Engine untuk MySQL dan buat koneksi SSH ke instance yang baru dibuat. Sistem operasi default-nya adalah Debian versi 10. Jika ingin menggunakan sistem operasi lain untuk tutorial ini, Anda dapat memilih dari opsi yang dijelaskan pada halaman image publik dalam dokumentasi Compute Engine.

Konsol

Untuk membuat instance Compute Engine di Konsol Google Cloud:

  1. Di konsol Google Cloud, buka halaman Compute Engine VM instances.

    Buka Compute Engine VM instances.

  2. Pilih project yang baru dibuat, lalu klik Continue.

  3. Klik Create instance (New instance jika Anda memiliki instance yang sudah ada). Beri nama instance mysql-test.

  4. Untuk menentukan sistem operasi selain nilai default, di bagian Boot disk, klik Change untuk mengonfigurasi properti boot disk. Di tab Public image, pilih sistem operasi, lalu klik Save.

  5. Agar sesuai dengan praktik terbaik keamanan, buat instance tanpa alamat IP eksternal.

    Luaskan Advanced options dan luaskan Networking. Di bagian Network interfaces, luaskan antarmuka default, dan pada menu External IPv4 address, pilihNone.

  6. Klik Create.

Untuk menyiapkan dan mengelola penafsiran alamat jaringan (NAT) dengan Cloud NAT:

  1. Di Konsol Google Cloud, buka halaman Cloud NAT.

    Buka Cloud NAT

  2. Klik Get started atau Create Cloud NAT gateway.

  3. Untuk Gateway name, masukkan nat-simple-configuration.

  4. Pada VPC network untuk gateway NAT, pilih default.

  5. Untuk Region untuk gateway NAT, pilih region yang Anda pilih di atas.

  6. Untuk Cloud Router, pilih Create new router.

  7. Di dialog yang muncul, masukkan Name untuk router, nat-router-simple-configuration, lalu klik Create.

  8. Klik Advanced configuration.

  9. Di bagian Stackdriver logging, pilih Translation and errors. Tindakan ini akan mengirim semua log ke Cloud Logging.

  10. Klik Create.

Untuk membuat koneksi SSH:

  1. Di halaman VM instances, temukan instance VM baru Anda dalam daftar.

  2. Di kolom Connect, klik SSH. Terminal SSH terbuka di jendela browser.

gcloud

  1. Untuk membuat instance Compute Engine, gunakan perintah gcloud compute instances create. Untuk menentukan sistem operasi, tambahkan parameter --image-family, diikuti dengan kelompok image atau parameter --image, diikuti dengan nama image untuk versi image tertentu. Misalnya, untuk menggunakan image terbaru dari kelompok Debian 10, tambahkan --image-family debian-10. Saat menggunakan image publik, project image harus disediakan menggunakan parameter --image-project.

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. Buat Cloud Router sederhana.

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Siapkan dan kelola penafsiran alamat jaringan (NAT) dengan 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. Hubungkan ke instance menggunakan ssh.

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

    Koneksi SSH dibuat melalui penerusan TCP yang ditangani oleh Identity-Aware Proxy (IAP).

Menginstal MySQL

Langkah-langkah berikut menjelaskan cara menginstal MySQL di instance Compute Engine.

Debian 10+

Petunjuk ini menginstal MySQL 8 atau 5.7.

Debian versi 10 dan yang lebih baru memuat MariaDB, bukan MySQL sebagai bagian dari sistem pengelolaan paketnya. MariaDB mempertahankan kompatibilitas dengan protokol MySQL, tetapi memiliki set fitur yang berkembang secara independen. Untuk mengetahui detail selengkapnya, lihat MariaDB vs. MySQL.

Untuk menginstal MySQL, download paket rilis dan instal secara manual menggunakan perintah dpkg.

  1. Instal dependensi wget.

    sudo apt-get install -y wget
    
  2. Download paket rilis 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. Verifikasi integritas file paket rilis.

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

    Keaslian dan integritas file akan diverifikasi jika Anda melihat output berikut.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Setelah Anda memverifikasi file, tambahkan paket MySQL ke repositori paket lokal.

    sudo dpkg -i ${DEB_FILE}
    

    Anda akan diminta untuk mengonfirmasi opsi penginstalan, termasuk versi MySQL.

  5. Dengan opsi menu MySQL Server & Cluster teratas yang dipilih, tekan Return, lalu gunakan tombol panah untuk memilih versi server.

    Panduan ini mengharapkan Anda untuk memilih MySQL 8.0 atau 5.7. Tekan Return di keyboard setelah memilih versi.

  6. Setelah puas dengan opsi yang dipilih dalam menu konfigurasi, gunakan tombol panah untuk memilih Ok pada menu dan tekan Return pada keyboard.

  7. Update cache paket.

    sudo apt-get update
    

    Jika Anda menerima error GPG yang mirip dengan The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29, impor kunci GPG yang tidak ada dengan perintah yang mengikuti pola ini:

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

    Dalam pesan error demonstratif, kunci publik yang tidak ada adalah 467B942D3A79BD29; berikan nilai ini dengan opsi --recv-keys.

    Ulangi perintah untuk mengupdate cache paket.

  8. Instal MySQL. Proses penginstalan akan memulai layanan MySQL untuk Anda.

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

    Anda akan diminta untuk memberikan beberapa detail penginstalan seperti sandi root.

Debian 9

Petunjuk ini menginstal MySQL 8 atau 5.7.

Secara Default, beberapa versi Debian, seperti Debian 9, menginstal MariaDB sebagai server MySQL default. MariaDB dirancang agar kompatibel dengan MySQL dan dapat dipanggil menggunakan perintah yang sama. Untuk mengetahui detail tentang perbedaan MariaDB dengan MySQL standar, lihat Berpindah dari MySQL ke MariaDB di Debian 9.

Untuk menginstal MySQL, ikuti petunjuk berikut:

  1. Download paket rilis 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. Verifikasi integritas file paket rilis.

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

    Keaslian dan integritas file akan diverifikasi jika Anda melihat output berikut.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Setelah Anda memverifikasi file, tambahkan paket MySQL ke repositori paket lokal.

    sudo dpkg -i ${DEB_FILE}
    

    Anda akan diminta untuk mengonfirmasi opsi penginstalan, termasuk versi MySQL.

  4. Dengan opsi menu MySQL Server & Cluster teratas yang dipilih, tekan Return, lalu gunakan tombol panah untuk memilih versi server.

    Panduan ini mengharapkan Anda untuk memilih MySQL 8.0 atau 5.7. Tekan Return di keyboard setelah memilih versi.

  5. Setelah puas dengan opsi yang dipilih dalam menu konfigurasi, gunakan tombol panah untuk memilih Ok pada menu dan tekan Return pada keyboard.

  6. Update cache paket.

    sudo apt-get update
    

    Jika Anda menerima error GPG yang mirip dengan The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29, impor kunci GPG yang tidak ada dengan perintah yang mengikuti pola ini:

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

    Dalam pesan error demonstratif, kunci publik yang tidak ada adalah 467B942D3A79BD29; berikan nilai ini dengan opsi --recv-keys.

    Ulangi perintah untuk mengupdate cache paket.

  7. Instal MySQL. Proses penginstalan akan memulai layanan MySQL untuk Anda.

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

Ubuntu

Untuk Ubuntu 1804 dan yang lebih lama, petunjuk ini menginstal MySQL 5.7.
Untuk Ubuntu 2004 dan yang lebih baru, petunjuk ini menginstal MySQL 8.

  1. Update pengelola paket apt-get.

    sudo apt-get update
    
  2. Instal MySQL. Proses penginstalan akan memulai layanan MySQL untuk Anda.

    sudo apt-get -y install mysql-server
    
  3. Secara default dalam distribusi Ubuntu, mysql mengautentikasi pengguna root dengan plugin auth_socket. Jalankan kueri ini untuk memverifikasi konfigurasi default ini:

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

    Output menunjukkan bahwa pengguna root yang terhubung dari localhost akan menggunakan plugin auth_socket:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. Ubah setelan ini, dan ubah sandi root menjadi sandi yang sulit ditebak:

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

    Output-nya berisi sandi root baru:

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

CentOS atau RHEL 7

Petunjuk ini menginstal MySQL 8.

CentOS dan RHEL versi 7 memuat MariaDB, bukan MySQL sebagai bagian dari sistem pengelolaan paketnya. Untuk menginstal MySQL, Anda harus terlebih dahulu mengupdate pengelola paket.

  1. Download paket rilis 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. Verifikasi integritas file paket rilis.

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

    Keaslian dan integritas file akan diverifikasi jika Anda melihat output berikut.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Update pengelola paket untuk menyertakan MySQL.

    sudo rpm -Uvh ${RPM_FILE}
    
  4. Instal MySQL.

    sudo yum -y install mysql-community-server
    
  5. Mulai server MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Dapatkan sandi root sementara dari log server

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

Rocky Linux atau RHEL 8

Petunjuk ini menginstal MySQL 8.

Rocky Linux, CentOS Stream, dan RHEL versi 8 memuat MariaDB, bukan MySQL sebagai bagian dari sistem pengelolaan paketnya. Untuk menginstal MySQL, Anda harus terlebih dahulu mengupdate pengelola paket.

  1. Download paket rilis 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. Verifikasi integritas file paket rilis.

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

    Keaslian dan integritas file akan diverifikasi jika Anda melihat output berikut.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Update pengelola paket untuk menyertakan MySQL.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. Instal MySQL. Selama penginstalan, nonaktifkan repositori AppStream agar penginstalan akan menggunakan server komunitas.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. Mulai server MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Dapatkan sandi root sementara dari log server

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

Meningkatkan keamanan penginstalan MySQL

Untuk meningkatkan keamanan penginstalan MySQL, jalankan perintah mysql_secure_installation. Jika Anda tidak menyetel sandi selama proses penginstalan, buat sandi di langkah ini. Untuk mengetahui informasi selengkapnya tentang perintah ini, baca dokumentasi MySQL untuk mysql_secure_installation.

sudo mysql_secure_installation

Terhubung ke MySQL

Langkah-langkah berikut menjelaskan cara terhubung ke MySQL dari instance mysql-test.

MySQL 8.0

  1. Terhubung ke MySQL menggunakan klien MySQL.

    sudo mysql -u root -p
    

    Saat Anda terhubung ke MySQL, perintah akan berubah menjadi mysql>.

    Anda kemudian dapat menjalankan perintah MySQL. Misalnya, perintah berikut menunjukkan thread yang berjalan, termasuk koneksi saat ini.

    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)

    Anda dapat menggunakan perintah berikut untuk membuat daftar pengguna.

    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. Setelah selesai menjalankan perintah, gunakan perintah exit untuk keluar dari klien MySQL, lalu gunakan exit lagi untuk logout dari instance Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

  1. Terhubung ke MySQL menggunakan klien MySQL.

    sudo mysql -u root -p
    

    Saat Anda terhubung ke MySQL, perintah akan berubah menjadi mysql>.

    Anda kemudian dapat menjalankan perintah MySQL. Misalnya, perintah berikut menunjukkan thread yang berjalan, termasuk koneksi saat ini.

    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)

    Anda dapat menggunakan perintah berikut untuk membuat daftar pengguna.

    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. Setelah selesai menjalankan perintah, gunakan perintah exit untuk keluar dari klien MySQL, lalu gunakan exit lagi untuk logout dari instance Compute Engine.

    mysql> exit
    Bye

Pembersihan

Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus instance

Untuk menghapus instance Compute Engine:

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Pilih kotak centang untuk instance yang ingin Anda hapus.
  3. Untuk menghapus instance, klik Tindakan lainnya, klik Hapus, lalu ikuti petunjuknya.

Langkah selanjutnya

Sekarang, Anda telah mempelajari cara menginstal server MySQL di Compute Engine. Untuk melihat aplikasi lebih kompleks yang menggunakan MySQL, jelajahi berbagai variasi stack pengembangan di Cloud Marketplace yang menggunakan MySQL.

Jika persyaratan Anda mencakup ketersediaan tinggi dan skalabilitas, pertimbangkan untuk menginstal Cluster MySQL di Compute Engine. Cluster MySQL menyediakan ketersediaan tinggi dan skalabilitas melalui pengelompokan tanpa kendala dan shard otomatis. Cloud Marketplace menyediakan opsi klik untuk men-deploy untuk Percona, sebuah solusi open source untuk pengelompokan MySQL.

Solusi open source lainnya untuk skalabilitas MySQL adalah Vitess, yang telah menyajikan semua traffic database YouTube sejak tahun 2011. Vitess sangat cocok untuk aplikasi yang berjalan di container. Untuk mengetahui informasi lebih lanjut tentang cara menggunakan Vitess di lingkungan dalam container, lihat Menjalankan Vitess di Kubernetes.

Untuk informasi lebih lanjut tentang MySQL, lihat dokumentasi resmi MySQL.

Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.