Tutorial ini membahas proses menjalankan database MySQL di jaringan pribadi di Google Cloud untuk memungkinkan akses jarak jauh yang aman ke database tersebut menggunakan Compute Engine.
Gunakan tutorial ini jika Anda ingin menginstal database MySQL sendiri di Compute Engine, tetapi ingin membatasi akses hanya untuk klien MySQL resmi yang juga berjalan di Compute Engine. Anda mungkin ingin mengelola instance MySQL sendiri daripada menggunakan layanan terkelola, karena instance lintas region, penggunaan parameter lanjutan, dan kebutuhan performa tertentu.
Tutorial ini menjelaskan cara mengonfigurasi aplikasi server MySQL untuk menerima traffic jarak jauh dari klien MySQL yang diinstal pada instance Compute Engine di jaringan pribadi yang sama.
Untuk mengetahui informasi tentang cara memilih opsi deployment MySQL yang tepat, lihat Cara menginstal MySQL di Compute Engine.
Tutorial ini mengasumsikan bahwa Anda sudah memahami hal-hal berikut:
- Perintah Linux dasar
- Ubuntu-server 18.04
- MySQL 5.7
- Compute Engine
Arsitektur
Dalam tutorial ini, Anda akan men-deploy dua instance Compute Engine. Satu instance adalah server dan instance lainnya adalah klien seperti yang ditunjukkan dalam diagram berikut:
Tujuan
- Membuat instance Compute Engine dan menginstal server MySQL.
- Membuat instance Compute Engine dan menginstal klien MySQL.
- Mengonfigurasi server MySQL untuk akses jarak jauh.
- Menghapus akses publik ke server MySQL.
- Terhubung ke MySQL dari jarak jauh.
- Membuat aturan firewall Kontrol Layanan VPC.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Compute Engine API.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Compute Engine API.
Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Lihat Pembersihan untuk mengetahui detail selengkapnya.
Membuat instance Compute Engine
Buat dua instance untuk MySQL—klien dan instance server.
Membuat instance klien Compute Engine
-
Beri nama instance
my-client
. -
Tetapkan flag
--zone
ke zona tempat Anda ingin membuat instance. -
Tetapkan tanda
--image-project
keubuntu-os-cloud
. -
Tetapkan tanda
--image-family
keubuntu-1804-lts
. -
Tetapkan
--scopes
flag kehttps://www.googleapis.com/auth/cloud-platform
.
gcloud compute instances create my-client --zone=ZONE --image-project=ubuntu-os-cloud --image-family=ubuntu-1804-lts --scopes=https://www.googleapis.com/auth/cloud-platform
Membuat instance server Compute Engine
-
Beri nama instance
my-server
. -
Tetapkan flag
--zone
ke zona tempat Anda ingin membuat instance. -
Tetapkan tanda
--image-project
keubuntu-os-cloud
. -
Tetapkan tanda
--image-family
keubuntu-1804-lts
. -
Tetapkan
--scopes
flag kehttps://www.googleapis.com/auth/cloud-platform
.
gcloud compute instances create my-server --zone=ZONE --image-project=ubuntu-os-cloud --image-family=ubuntu-1804-lts --scopes=https://www.googleapis.com/auth/cloud-platform
Menginstal klien MySQL
Langkah-langkah berikut menjelaskan cara menginstal MySQL pada instance Compute Engine.
- Untuk terhubung ke instance
my-client
, gunakan perintahssh
. - Update pengelola paket
apt-get
.sudo apt-get update
- Instal paket klien MySQL.
sudo apt-get -y install mysql-client-5.7
Menginstal server MySQL
Langkah-langkah berikut menjelaskan cara menginstal MySQL pada instance Compute Engine.
- Untuk terhubung ke instance
my-server
, gunakan perintahssh
. - Update pengelola paket
apt-get
.sudo apt-get update
- Instal paket server MySQL.
sudo apt-get -y install mysql-server-5.7
Meningkatkan keamanan penginstalan MySQL
Anda harus membuat sandi root untuk MySQL dan melakukan pemeliharaan keamanan dasar pada konfigurasi server MySQL Anda. Untuk mengetahui informasi selengkapnya, baca dokumentasi MySQL untuk mysql_secure_installation
.
Dalam sesi SSH ke instance
my-server
Anda, gunakan perintah berikut untuk meningkatkan keamanan penginstalan MySQL Anda.sudo mysql_secure_installation
Tekan
enter
untuk melewati penyiapan pluginVALIDATE PASSWORD
.Masukkan sandi root baru dua kali.
Untuk menghapus pengguna anonim, masukkan
Y
dan tekanenter
.Untuk mencegah login root jarak jauh, masukkan
Y
dan tekanenter
.Untuk menghapus database pengujian, masukkan
Y
lalu tekanenter
.Untuk memuat ulang tabel hak istimewa, masukkan
Y
lalu tekanenter
.
Mengonfigurasi server MySQL
Sebelum dapat terhubung ke server MySQL dari jarak jauh, Anda perlu mengonfigurasinya untuk memproses alamat IP internalnya. Kemudian, Anda membuat akun pengguna non-root agar klien MySQL dapat terhubung ke server.
Semua perintah klien MySQL harus menyertakan flag command line tertentu (misalnya, untuk mengautentikasi). Perintah MySQL di bagian ini mencakup flag berikut: --user
untuk nama pengguna, -p
untuk sandi, dan -e
untuk menjalankan pernyataan yang diberikan dan segera keluar. Untuk
mengetahui informasi selengkapnya, lihat
Referensi opsi perintah MySQL 5.7.
Di Cloud Shell, gunakan SSH untuk terhubung ke instance
my-server
.Update file konfigurasi
/etc/mysql/mysql.conf.d/mysqld.cnf
dengan informasi berikut:LOCAL_IP=$(curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip \ -H "Metadata-Flavor: Google") sudo sed -i "s|bind-address.*|bind-address = $LOCAL_IP|" /etc/mysql/mysql.conf.d/mysqld.cnf
Mulai ulang layanan MySQL untuk menerapkan perubahan ke server yang berjalan.
sudo service mysql restart
Pastikan server berjalan secara lokal. Ganti
[ROOT_PASSWORD]
dengan sandi root server MySQL yang Anda buat di langkah sebelumnya.sudo mysql --user=root -p[ROOT_PASSWORD] -e "show databases"
Output-nya akan terlihat mirip dengan berikut ini:
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
Membuat pengguna MySQL
Terhubung dari jarak jauh karena pengguna root dinonaktifkan dengan perintah
mysql_secure_installation
sebelumnya. Anda harus membuat pengguna baru dengan
izin yang diperlukan untuk memungkinkan koneksi jarak jauh.
Di Cloud Shell, buat variabel lingkungan untuk alamat IP internal
my-client
.CLIENT_IP=$(gcloud compute instances describe my-client \ --zone=ZONE \ --format='value(networkInterfaces[0].networkIP)')
Buat pengguna MySQL baru dengan sandi. Ganti
[MY_PASSWORD]
dengan sandi Anda,[ROOT_PASSWORD]
dengan sandi pengguna root MySQL Anda.sudo mysql -uroot -p[ROOT_PASSWORD] \ -e "CREATE USER 'TESTUSER'@'${CLIENT_IP}' IDENTIFIED BY '[MY_PASSWORD]';"
Berikan izin kepada pengguna MySQL baru untuk login ke server dari alamat IP internal
my-client
.sudo mysql -uroot -p[ROOT_PASSWORD] -e \ "GRANT ALL PRIVILEGES ON *.* TO 'TESTUSER'@'${CLIENT_IP}' \ IDENTIFIED BY '[MY_PASSWORD]';"
Hapus alamat IP eksternal untuk my-server
Instance my-server
tidak memerlukan alamat IP eksternal karena
klien dapat mengakses my-server
melalui alamat IP internal.
Untuk menghapus alamat IP eksternal, update setelan konfigurasi di Cloud Shell. Ganti
[ZONE]
dengan zona Google Cloud Anda.gcloud compute instances delete-access-config my-server \ --access-config-name "external-nat" \ --zone="ZONE"
Memverifikasi akses jarak jauh dari instance klien ke server
Langkah-langkah berikut menjelaskan cara terhubung ke server MySQL di my-server
dari instance my-client
Anda.
- Di Cloud Shell, gunakan SSH untuk terhubung ke instance
my-client
. Uji koneksi Anda dengan membuat daftar database.
sudo mysql --host=my-server --user=TESTUSER \ --password=[MY_PASSWORD] -e "SHOW DATABASES;"
Output-nya akan tampak mirip dengan berikut ini:
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
Langkah-langkah ini memverifikasi bahwa klien MySQL Anda berhasil terhubung ke server MySQL melalui alamat IP internal.
Pertimbangan firewall dalam lingkungan produksi
Konfigurasi jaringan default di Google Cloud mencakup aturan firewall,
default-allow-internal
, yang memungkinkan traffic internal antara instance Compute Engine pada berbagai port, termasuk port MySQL, port 3306
. Di lingkungan non-default dengan jejak keamanan yang telah ditetapkan, Anda mungkin perlu membuat aturan firewall agar instance my-client
Anda dapat berkomunikasi dengan instance my-server
melalui jaringan. Jika tidak,
kedua instance tidak dapat saling berkomunikasi.
Anda dapat mendasarkan aturan firewall pada rentang atau tag alamat IP. Rentang alamat IP berguna jika Anda ingin memberikan akses ke berbagai alamat IP internal. Atau, jika Anda ingin memberikan akses ke instance tertentu di jaringan Anda, tag dapat memberikan solusi yang lebih fleksibel. Tag memudahkan Anda menambahkan klien baru tanpa memberikan akses ke berbagai alamat IP. Anda hanya perlu menetapkan tag yang sesuai ke instance klien MySQL yang baru. Misalnya, Anda dapat membuat aturan firewall baru yang mengizinkan traffic dari semua instance klien yang diberi tag dengan mysql-client
.
Untuk mendukung aturan firewall menggunakan tag, Anda dapat menetapkan tag yang sesuai ke VM my-client
dan my-server
di Cloud Shell.
gcloud compute instances add-tags my-client --tags mysql-client --zone=ZONE
gcloud compute instances add-tags my-server --tags mysql-server --zone=ZONE
Menambahkan aturan firewall baru
Langkah-langkah berikut menjelaskan cara membuat aturan firewall baru untuk memungkinkan instance dengan tag my-client
berkomunikasi dengan instance yang memiliki tag my-server
menggunakan port 3306
.
Di Cloud Shell, buat aturan firewall untuk mengizinkan komunikasi dari
mysql-client
kemysql-server
.gcloud compute firewall-rules create "mysql-remote-access" \ --allow tcp:3306 --source-tags "mysql-client" \ --target-tags "mysql-server"
Sekarang Anda dapat terhubung ke MySQL dari my-client
.
Mengakses pertimbangan dari klien eksternal
Tutorial ini membahas akses dari klien MySQL ke server MySQL yang keduanya berjalan di Compute Engine. Akses dari klien yang tidak berjalan di Compute Engine berada di luar cakupan tutorial ini. Jika Anda perlu mengizinkan akses non-Compute Engine, ubah hal berikut:
- Tambahkan alamat IP eksternal ke
my-server
untuk mengizinkan konektivitas eksternal. - Tambahkan alamat IP sumber klien eksternal ke aturan firewall.
- Ubah akun
TESTUSER
, atau buat sebuah akun pengguna, yang terikat dengan alamat IP sumber klien eksternal Anda.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, Anda dapat menghapus project atau menghapus instance.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus instance
Untuk menghapus instance Compute Engine:
- Di konsol Google Cloud, buka halaman Instance VM.
-
Pilih kotak centang untuk
instance
my-server
Anda. - Untuk menghapus instance, klik Tindakan lainnya, klik Hapus, lalu ikuti petunjuknya.
Langkah selanjutnya
- Baca ketersediaan tinggi untuk MySQL.
- Baca Cara menyiapkan MySQL di Compute Engine.
- Mengonfigurasi Cloud Logging untuk log MySQL.
Pelajari Cloud SQL.
Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.