Halaman ini menjelaskan cara menggunakan klien mysql, yang diinstal pada instance Compute Engine, untuk terhubung ke Cloud SQL.
Anda dapat menggunakan IP pribadi, IP publik, Proxy Auth Cloud SQL, atau image Docker Proxy Auth Cloud SQL.
Untuk mengetahui petunjuk langkah demi langkah cara menjalankan aplikasi web contoh Compute Engine yang terhubung ke Cloud SQL, baca panduan memulai untuk menghubungkan dari Compute Engine.
Sebelum memulai
Tugas ini tidak termasuk petunjuk untuk menyiapkan instance Compute Engine. Jika Anda memerlukan bantuan dalam membuat dan mengonfigurasi instance Compute Engine, baca dokumentasi Compute Engine.
Jika VM Compute Engine atau jaringan VPC Anda membatasi traffic keluar, pastikan aturan firewall Anda mengizinkan koneksi TCP keluar pada port tujuan yang diperlukan:
- Koneksi langsung melalui IP pribadi, IP publik, atau
Private Service Connect:
Izinkan koneksi TCP keluar ke port MySQL default,
3306, pada alamat IP instance Cloud SQL Anda. - Proxy Auth Cloud SQL atau Cloud SQL Language Connectors: Izinkan koneksi TCP keluar ke port
3307di alamat IP instance Cloud SQL Anda dan port443untuk permintaan APIsqladmin.googleapis.com. Saat menggunakan soket TCP lokal di VM, klien database Anda terhubung ke Proxy Auth Cloud SQL di127.0.0.1:3306atau port yang ditentukan dengan--port.
IP Pribadi
Agar dapat terhubung ke Cloud SQL dari instance Compute Engine menggunakan IP pribadi, akses layanan pribadi harus disiapkan untuk lingkungan Anda, dan instance Cloud SQL Anda harus dikonfigurasi untuk menggunakan IP pribadi. Instance Compute Engine Anda harus berada di region yang sama dengan instance Cloud SQL, dan di jaringan yang dikonfigurasi untuk koneksi pribadi. Pelajari lebih lanjut.
1. Konfigurasikan instance Anda untuk menggunakan IP pribadi
Gunakan petunjuk di Mengonfigurasi Konektivitas IP Pribadi.
2. Buka koneksi terminal Cloud Shell ke instance Compute Engine Anda.
Gunakan petunjuk yang tepat, bergantung pada sistem operasi instance:
- Untuk Linux, lihat Menghubungkan ke VM Linux.
- Untuk Windows, lihat Menghubungkan ke VM Windows.
Jika instance Compute Engine Anda menjalankan image publik RHEL atau CentOS, SELinux mungkin akan memblokir koneksi proxy. Jika hal ini terjadi, Anda harus mengonfigurasi fitur SELinux untuk mengizinkan koneksi.
Untuk mengetahui informasi selengkapnya tentang SELinux untuk RHEL, lihat dokumentasi RHEL. Untuk informasi selengkapnya tentang SELinux untuk CentOS, lihat dokumentasi CentOS.
3. Instal klien mysql pada instance Compute Engine, jika belum diinstal.
- Download MySQL Community Server untuk platform Anda dari
halaman download MySQL Community Server.
Server Komunitas mencakup klien MySQL. - Instal Server Komunitas, dengan mengikuti petunjuk di halaman download.
Untuk mengetahui informasi selengkapnya tentang cara menginstal MySQL, lihatMenginstal dan Mengupgrade MySQL.
4. Menghubungkan dengan klien mysql.
mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p
Anda dapat menemukan alamat IP pribadi di
halaman instance Cloud SQL atau dengan menjalankan perintah
gcloud berikut:
gcloud sql instances list
IP Publik
Untuk terhubung menggunakan IP publik:
Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Cloud Shell Editor, klik Pandu saya:
1. Tambahkan alamat IP IPv4 statis ke instance Compute Engine, jika belum memilikinya.
Anda tidak dapat terhubung ke Compute Engine menggunakan IPv6. Untuk mengetahui informasi tentang cara menambahkan alamat IP statis, lihat Mencadangkan alamat IP eksternal statis baru dalam dokumentasi Compute Engine.
2. Izinkan alamat IP statis instance Compute Engine sebagai jaringan yang dapat terhubung ke instance Cloud SQL Anda.
Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi akses untuk koneksi IP publik.
3. Buka koneksi terminal Cloud Shell ke instance Compute Engine Anda.
Gunakan petunjuk yang tepat, bergantung pada sistem operasi instance:
- Untuk Linux, lihat Menghubungkan ke VM Linux.
- Untuk Windows, lihat Menghubungkan ke VM Windows.
Jika instance Compute Engine Anda menjalankan image publik RHEL atau CentOS, SELinux mungkin akan memblokir koneksi proxy. Jika hal ini terjadi, Anda harus mengonfigurasi fitur SELinux untuk mengizinkan koneksi.
Untuk mengetahui informasi selengkapnya tentang SELinux untuk RHEL, lihat dokumentasi RHEL. Untuk mengetahui informasi selengkapnya tentang SELinux untuk CentOS, lihat dokumentasi CentOS.
4. Instal klien mysql pada instance Compute Engine, jika belum diinstal.
- Download MySQL Community Server untuk platform Anda dari
halaman download MySQL Community Server.
Server Komunitas mencakup klien MySQL. - Instal Server Komunitas, dengan mengikuti petunjuk di halaman download.
Untuk mengetahui informasi selengkapnya tentang cara menginstal MySQL, lihatMenginstal dan Mengupgrade MySQL.
5. Menghubungkan dengan klien mysql.
mysql -h CLOUD_SQL_PUBLIC_IP_ADDR -u USERNAME -p
Anda dapat menemukan alamat IP publik di
halaman instance Cloud SQL atau dengan menjalankan perintah
gcloud berikut:
gcloud sql instances list
Untuk contoh cara menghubungkan menggunakan SSL, lihat Menghubungkan dengan SSL.
6. Perintah mysql akan muncul.
7. Jika Anda perlu mengaktifkan koneksi yang tidak digunakan:
Setel keepalive TCP.
Untuk mengetahui informasi lebih lanjut, lihat Berkomunikasi antara instance dan Internet dalam dokumentasi Compute Engine.
Koneksi akan tetap aktif secara otomatis untuk instance.
Proxy Auth Cloud SQL
Untuk terhubung menggunakan Proxy Auth Cloud SQL dari Compute Engine:1. Aktifkan Cloud SQL Admin API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui
peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui
peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
2. Membuat akun layanan.
- Di konsol Google Cloud , buka halaman Service accounts.
- Pilih project yang berisi instance Cloud SQL.
- Klik Create service account.
- Pada kolom Nama akun layanan, masukkan nama deskriptif untuk akun tersebut.
- Ubah ID akun layanan menjadi nilai yang unik dan dapat dikenali, kemudian klik Buat dan lanjutkan.
-
Klik kolom Pilih peran dan pilih salah satu dari peran berikut:
- Cloud SQL > Klien Cloud SQL
- Cloud SQL > Editor Cloud SQL
- Cloud SQL > Admin Cloud SQL
- Klik Selesai untuk menyelesaikan pembuatan akun layanan.
- Klik menu tindakan untuk akun layanan baru kemudian pilih Mengelola kunci.
- Klik menu drop-down Tambahkan kunci kemudian klik Buat kunci baru.
-
Lakukan konfirmasi bahwa jenis kunci tersebut adalah JSON kemudian klik Buat.
File kunci pribadi telah didownload ke mesin. Anda dapat memindahkan file tersebut ke lokasi lain. Simpan file kunci dengan aman.
Jika instance Compute Engine berada dalam project yang berbeda dengan instance Cloud SQL, pastikan akun layanannya memiliki izin yang tepat di project yang berisi instance Cloud SQL:
- Buka listingan instance Compute Engine di konsol Google Cloud .
- Jika perlu, pilih project yang berkatan dengan instance Compute Engine.
- Pilih instance Compute Engine untuk menampilkan propertinya.
- Di properti instance Compute Engine, salin nama akun layanan.
- Buka halaman Project IAM & Admin di konsol Google Cloud .
- Pilih project yang berisi instance Cloud SQL.
- Telusuri nama akun layanan.
-
Jika akun layanan sudah ada, dan memiliki peran yang menyertakan izin
cloudsql.instances.connect, Anda dapat melanjutkan ke langkah 4.Peran
Cloud SQL Client,Cloud SQL Editor, danCloud SQL Adminmemberikan izin yang diperlukan, seperti halnya peran projectEditordanOwnerlama. - Atau, tambahkan akun layanan dengan mengklik Tambahkan.
Pada dialog Add Principals, masukkan nama akun layanan dan pilih peran yang menyertakan izin
cloudsql.instances.connect(peran Cloud SQL yang telah ditetapkan sebelumnya, selain Viewer, akan berfungsi).Sebagai alternatif, Anda dapat menggunakan peran Editor dasar dengan memilih Project > Editor, tetapi peran Editor mencakup izin di seluruh Google Cloud.
Jika tidak melihat peran ini, pengguna Google Cloud Anda mungkin tidak memiliki izin
resourcemanager.projects.setIamPolicy. Anda dapat memeriksa izin dengan membuka halaman IAM di konsol Google Cloud dan menelusuri ID pengguna Anda.- Klik Tambahkan.
Sekarang Anda melihat akun layanan yang tercantum dengan peran yang ditentukan.
3. Buka koneksi terminal ke instance Compute Engine Anda.
Gunakan petunjuk yang tepat, bergantung pada sistem operasi instance:
- Untuk Linux, lihat Menghubungkan ke Instance Linux.
- Untuk Windows, lihat Menghubungkan ke Instance Windows.
Jika instance Compute Engine Anda menjalankan image publik RHEL atau CentOS, SELinux mungkin akan memblokir koneksi proxy. Jika hal ini terjadi, Anda harus mengonfigurasi fitur SELinux untuk mengizinkan koneksi.
Untuk mengetahui informasi selengkapnya tentang SELinux untuk RHEL, lihat dokumentasi RHEL. Untuk mengetahui informasi selengkapnya tentang SELinux untuk CentOS, lihat dokumentasi CentOS.
4. Instal klien mysql pada instance Compute Engine, jika belum diinstal.
- Download MySQL Community Server untuk platform Anda dari
halaman download MySQL Community Server.
Server Komunitas mencakup klien MySQL. - Instal Server Komunitas, dengan mengikuti petunjuk di halaman download.
Untuk mengetahui informasi selengkapnya tentang cara menginstal MySQL, lihatMenginstal dan Mengupgrade MySQL.
5. Instal Proxy Auth Cloud SQL pada instance Compute Engine.
Sebelum memulai, Anda harus menentukan arsitektur mesin Anda.
Jika berjalan di Linux atau Mac, Anda dapat menemukannya dengan menjalankan perintah berikut:
uname -a
Linux 64 bit
- Download Proxy Auth Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.3/cloud-sql-proxy.linux.amd64
- Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
chmod +x cloud-sql-proxy
Linux 32 bit
- Download Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.3/cloud-sql-proxy.linux.386
- Jika perintah
curltidak ditemukan, jalankansudo apt install curldan ulangi perintah download. - Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
chmod +x cloud-sql-proxy
Windows 64 bit
Klik kanan https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.3/cloud-sql-proxy.x64.exe dan pilih Save Link As untuk mendownload Cloud SQL Auth Proxy. Ganti nama file menjadicloud-sql-proxy.exe.
Windows 32 bit
Klik kanan https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.3/cloud-sql-proxy.x86.exe dan pilih Save Link As untuk mendownload Cloud SQL Auth Proxy. Ganti nama file menjadicloud-sql-proxy.exe.
Image Docker Proxy Auth Cloud SQL
Proxy Auth Cloud SQL memiliki image container yang berbeda, seperti distroless, alpine,
dan buster. Image container Proxy Auth Cloud SQL default menggunakan
distroless, yang
tidak berisi shell. Jika Anda memerlukan shell atau alat terkait, download image berdasarkan alpine atau buster.
Untuk mengetahui informasi selengkapnya, lihat
Image Container Proxy Auth Cloud SQL.
Anda dapat menarik image terbaru ke mesin lokal menggunakan Docker dengan perintah berikut:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.3
OS Lainnya
Untuk sistem operasi lain yang tidak disertakan di sini, Anda dapat mengompilasi Proxy Auth Cloud SQL dari sumber.6. Mulai Cloud SQL Auth Proxy.
Anda dapat memulai Cloud SQL Auth Proxy menggunakan soket TCP, soket Unix, atau image Docker Cloud SQL Auth Proxy, tergantung pada bahasa dan lingkungan. Program biner Cloud SQL Auth Proxy terhubung ke satu atau beberapa instance Cloud SQL yang ditentukan pada command line, dan membuka koneksi lokal sebagai soket TCP atau Unix. Aplikasi atau layanan lain seperti kode aplikasi atau alat pengelolaan database klien dapat terhubung ke instance Cloud SQL melalui koneksi soket TCP atau Unix tersebut.
Soket TCP
Cloud SQL Auth Proxy memproses localhost(127.0.0.1) secara default untuk koneksi TCP.
Oleh karena itu, saat Anda menentukan --port PORT_NUMBER untuk instance, koneksi lokal
berada di 127.0.0.1:PORT_NUMBER.
Anda dapat menentukan alamat yang berbeda untuk koneksi lokal sebagai alternatif lain.
Sebagai contoh, berikut ini cara membuat Cloud SQL Auth Proxy memproses 0.0.0.0:1234 untuk koneksi lokal:
./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
Salin INSTANCE_CONNECTION_NAME. Opsi ini dapat ditemukan di halaman Ringkasan untuk instance Anda di konsolGoogle Cloud atau dengan menjalankan perintah berikut:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
Misalnya: myproject:myregion:myinstance.
- Jika instance memiliki IP publik dan pribadi yang sudah dikonfigurasi, dan Anda ingin
Cloud SQL Auth Proxy menggunakan alamat IP pribadi,
Anda harus menyediakan opsi berikut saat memulai Cloud SQL Auth Proxy:
--private-ip
- Apabila menggunakan akun layanan untuk mengautentikasi Proxy Auth Cloud SQL, perhatikan lokasi file kunci pribadi yang dibuat saat Anda mengelola akun layanan tersebut di komputer klien.
- Mulai Cloud SQL Auth Proxy.
Beberapa string pemanggilan Cloud SQL Auth Proxy yang mungkin:
- Menggunakan autentikasi Cloud SDK:
Port yang ditentukan tidak boleh berupa port yang sedang digunakan, contohnya, oleh server database lokal../cloud-sql-proxy --port 3306 INSTANCE_CONNECTION_NAME
- Menggunakan akun layanan dan menyertakan nama koneksi instance secara eksplisit
(disarankan untuk lingkungan produksi):
./cloud-sql-proxy \ --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
Untuk mengetahui informasi selengkapnya tentang opsi Cloud SQL Auth Proxy, lihat Opsi untuk mengautentikasi Cloud SQL Auth Proxy.
- Menggunakan autentikasi Cloud SDK:
Soket Unix
Proxy Auth Cloud SQL dapat memproses soket Unix karena merupakan mekanisme standar Posix untuk menggunakan folder saat mengelola komunikasi antara dua proses berjalan pada host yang sama. Keuntungan menggunakan soket Unix adalah peningkatan keamanan dan latensi yang lebih rendah, namun, Anda tidak dapat mengakses soket Unix dari mesin eksternal.
Untuk membuat dan menggunakan soket Unix, direktori target harus ada, serta Cloud SQL Auth Proxy dan aplikasi harus memiliki akses baca dan tulis ke direktori tersebut.
Salin INSTANCE_CONNECTION_NAME. Opsi ini dapat ditemukan di halaman Ringkasan untuk instance Anda di konsolGoogle Cloud atau dengan menjalankan perintah berikut:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
Misalnya: myproject:myregion:myinstance.
- Buat direktori di tempat soket Proxy Auth Cloud SQL akan diaktifkan:
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- Apabila menggunakan akun layanan untuk mengautentikasi Proxy Auth Cloud SQL, perhatikan lokasi file kunci pribadi yang dibuat saat Anda mengelola akun layanan tersebut di komputer klien.
- Buka jendela terminal Cloud Shell baru dan mulai Proxy Auth Cloud SQL.
Beberapa string pemanggilan Cloud SQL Auth Proxy yang mungkin:
- Menggunakan autentikasi Google Cloud SDK:
./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
- Menggunakan akun layanan:
./cloud-sql-proxy --unix-socket /cloudsql --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
Mulai Proxy Auth Cloud SQL pada terminal Cloud Shell itu sendiri sehingga Anda dapat memantau output tersebut tanpa bercampur dengan output program lain.
Untuk mengetahui informasi selengkapnya tentang opsi Proxy Auth Cloud SQL, lihat Opsi untuk mengautentikasi Proxy Auth Cloud SQL.
- Menggunakan autentikasi Google Cloud SDK:
Docker
Untuk menjalankan Cloud SQL Auth Proxy pada container Docker, gunakan image Docker Cloud SQL Auth Proxy yang tersedia dari Google Container Registry.
Anda dapat memulai Proxy Auth Cloud SQL menggunakan soket TCP atau soket Unix, dengan perintah yang ditampilkan di bawah ini. Opsi tersebut menggunakan INSTANCE_CONNECTION_NAME sebagai string koneksi untuk mengidentifikasi instance Cloud SQL. Anda dapat menemukan INSTANCE_CONNECTION_NAME pada halaman Ringkasan untuk instance dalam konsolGoogle Cloud atau dengan menjalankan perintah berikut:
gcloud sql instances describe INSTANCE_NAME
Misalnya: myproject:myregion:myinstance.
Bergantung pada bahasa dan lingkungan, Anda dapat memulai Proxy Auth Cloud SQL menggunakan soket TCP atau soket Unix. Soket Unix tidak didukung untuk aplikasi yang ditulis dalam bahasa pemrograman Java atau untuk lingkungan Windows.
Menggunakan soket TCP
docker run -d \ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \ -p 127.0.0.1:3306:3306 \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.3 \ --address 0.0.0.0 --port 3306 \ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
Jika Anda menggunakan kredensial yang disediakan oleh instance Compute Engine,
jangan sertakan parameter --credentials-file dan baris
-v PATH_TO_KEY_FILE:/path/to/service-account-key.json
.
Selalu tentukan awalan 127.0.0.1 di -p agar
Cloud SQL Auth Proxy tidak terekspos di luar host lokal. Flag
--address 0.0.0.0 diperlukan agar port dapat diakses
dari luar container Docker.
Menggunakan soket Unix
Untuk membuat dan menggunakan soket Unix, direktori target di mesin host harus ada dan dapat ditulis oleh Proxy Auth Cloud SQL dan aplikasi. Container Proxy Auth Cloud SQL berjalan sebagai pengguna non-root (UID 65532). Jika direktori belum ada di host, Docker akan membuatnya dengan kepemilikan root, yang mencegah Cloud SQL Auth Proxy membuat soket.
Buat direktori di mesin host dan tetapkan izin sebelum memulai container:
sudo mkdir -p /cloudsql; sudo chmod 777 /cloudsql
Atau, Anda dapat menetapkan kepemilikan direktori ke pengguna non-root container (UID 65532):
sudo mkdir -p /cloudsql; sudo chown 65532:65532 /cloudsql
Mulai Proxy Auth Cloud SQL di container Docker:
docker run -d -v /cloudsql:/cloudsql \ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.3 \ --unix-socket /cloudsql \ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
Jika Anda menggunakan kredensial yang disediakan oleh instance Compute Engine,
jangan sertakan parameter --credentials-file dan baris
-v PATH_TO_KEY_FILE:/path/to/service-account-key.json
.
Jika Anda menggunakan image yang dioptimalkan untuk container, gunakan direktori yang dapat ditulis sebagai pengganti /cloudsql, misalnya:
-v /mnt/stateful_partition/cloudsql:/cloudsqlAnda dapat menentukan lebih dari satu instance yang dipisahkan dengan spasi. Anda juga dapat menggunakan metadata Compute Engine untuk menentukan instance yang akan dihubungkan secara dinamis. Pelajari lebih lanjut parameter Proxy Auth Cloud SQL.
7. Memulai sesi mysql.
String koneksi yang Anda gunakan tergantung pada pilihan untuk memulai Proxy Auth Cloud SQL menggunakan soket TCP, soket Unix, atau Docker.
Soket TCP
- Mulai klien mysql:
Jika Anda terhubung ke instance MySQL 8.4, gunakan perintah berikut:mysql -u USERNAME -p --host 127.0.0.1
mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key
Saat Anda terhubung menggunakan soket TCP, Proxy Auth Cloud SQL diakses melalui
127.0.0.1. - Jika diminta, masukkan sandi.
- Perintah mysql akan muncul.
Menggunakan soket Unix
- Mulai klien mysql:
mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME --get-server-public-key
- Masukkan sandi
- Perintah mysql akan muncul.
Butuh bantuan? Untuk menemukan bantuan pemecahan masalah proxy, lihat Memecahkan masalah koneksi Cloud SQL Auth Proxy, atau lihat halaman Dukungan Cloud SQL.
Langkah berikutnya
- Dapatkan bantuan pemecahan masalah koneksi untuk Proxy Auth Cloud SQL.
- Buat pengguna dan database.
- Pelajari lebih lanjut tentang IP pribadi.
- Pelajari tentang opsi untuk terhubung ke instance dari aplikasi Anda.
- Pelajari klien mysql.
- Pelajari alat administrasi MySQL lainnya.
- Pelajari tentang opsi untuk dukungan.