Halaman ini menjelaskan cara terhubung ke instance Cloud SQL menggunakan Proxy Auth Cloud SQL.
Untuk informasi lebih lanjut, terkait cara kerja Proxy Auth Cloud SQL, lihat Tentang Proxy Auth Cloud SQL.
Ringkasan
Menggunakan Proxy Auth Cloud SQL adalah metode yang direkomendasikan untuk menghubungkan ke instance Cloud SQL. Proxy Auth Cloud SQL:
- Berfungsi dengan endpoint IP pribadi dan publik
- Memvalidasi koneksi menggunakan kredensial untuk akun pengguna atau layanan.
- Menggabungkan koneksi dalam lapisan SSL/TLS yang diberi otorisasi untuk instance Cloud SQL.
Beberapa layanan dan aplikasi Google Cloud menggunakan Proxy Auth Cloud SQL untuk menyediakan koneksi bagi jalur IP publik dengan enkripsi dan otorisasi, termasuk:
Aplikasi yang berjalan di Google Kubernetes Engine dapat terhubung menggunakan Proxy Auth Cloud SQL.
Lihat Panduan memulai menggunakan Proxy Auth Cloud SQL untuk mengetahui pengantar dasar penggunaannya.
Anda juga dapat terhubung, dengan atau tanpa Proxy Auth Cloud SQL, menggunakan klien mysql dari mesin lokal atau Compute Engine.
Sebelum memulai
Sebelum Anda dapat terhubung ke instance Cloud SQL, lakukan hal berikut:
-
- Untuk akun pengguna atau layanan, pastikan akun tersebut memiliki
peran Klien Cloud SQL. Peran ini berisi
cloudsql.instances.connect
izin, yang memberi otorisasi kepada akun utama untuk terhubung ke semua instance Cloud SQL dalam project. - Anda dapat menyertakan kondisi IAM secara opsional dalam binding kebijakan IAM yang memberikan izin akun untuk terhubung hanya ke satu instance Cloud SQL tertentu.
- Untuk akun pengguna atau layanan, pastikan akun tersebut memiliki
peran Klien Cloud SQL. Peran ini berisi
-
Enable the Cloud SQL Admin API.
- Menginstal dan melakukan inisialisasi gcloud CLI.
- Opsional. Instal klien Docker Proxy Auth Cloud SQL.
Mendownload Proxy Auth Cloud SQL
Linux 64 bit
- Download Proxy Auth Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
- Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
chmod +x cloud-sql-proxy
Linux 32 bit
- Download Proxy Auth Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.386
- Jika perintah
curl
tidak ditemukan, jalankansudo apt install curl
dan ulangi perintah download. - Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
chmod +x cloud-sql-proxy
macOS 64-bit
- Download Proxy Auth Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.darwin.amd64
- Buat Proxy Auth Cloud SQL agar dapat dieksekusi:
chmod +x cloud-sql-proxy
Mac M1
- Download Proxy Auth Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.darwin.arm64
- 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.14.1/cloud-sql-proxy.x64.exe dan pilih Simpan Link Sebagai untuk mendownload Proxy Auth Cloud SQL. Ganti nama file menjadicloud-sql-proxy.exe
.
Windows 32 bit
Klik kanan https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x86.exe dan pilih Simpan Link Sebagai untuk mendownload Proxy Auth Cloud SQL. Ganti nama file menjadicloud-sql-proxy.exe
.
Image Docker Proxy Auth Cloud SQL
Proxy Auth Cloud SQL memiliki image penampung yang berbeda, seperti distroless
, alpine
,
dan buster
. Image penampung 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 Penampung Proxy Auth Cloud SQL.
Anda dapat menarik image terbaru ke mesin lokal menggunakan Docker dengan menggunakan perintah berikut:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1
OS Lainnya
Untuk sistem operasi lain yang tidak disertakan di sini, Anda dapat mengompilasi Proxy Auth Cloud SQL dari sumber.Memulai Proxy Auth Cloud SQL
Anda dapat memulai Proxy Auth Cloud SQL menggunakan soket TCP soket Unix, atau image Docker Proxy Aut Cloud SQL tergantung pada bahasa dan lingkungan. Biner Proxy Auth Cloud SQL terhubung ke salah satu atau beberapa instance Cloud SQL yang ditentukan pada command line dan membuka koneksi lokal instance 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
Proxy Auth Cloud SQL 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 Proxy Auth Cloud SQL 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 di konsol Google Cloud atau dengan menjalankan perintah berikut:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
Misalnya: myproject:myregion:myinstance.
- Apabila instance memiliki IP pribadi dan publik yang sudah dikonfigurasi kemudian ingin
Proxy Auth Cloud SQL tersebut menggunakan alamat IP pribadi,
Anda harus menyediakan opsi berikut saat memulai Proxy Auth Cloud SQL:
--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.
- Memulai Proxy Auth Cloud SQL.
Beberapa string pemanggilan Proxy Auth Cloud SQL memungkinkan untuk:
- Menggunakan autentikasi Cloud SDK:
Port yang ditentukan tidak boleh berupa port yang sedang digunakan, misalnya, 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 informasi selengkapnya tentang opsi Proxy Auth Cloud SQL, lihat Opsi untuk mengautentikasi Proxy Auth Cloud SQL.
- 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 dan aplikasi serta Proxy Auth Cloud SQL harus memiliki akses baca dan tulis ke direktori tersebut.
Salin INSTANCE_CONNECTION_NAME. Opsi ini dapat ditemukan di halaman Ringkasan untuk instance di konsol Google 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 Proxy Auth Cloud SQL memungkinkan untuk:
- 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 informasi selengkapnya tentang opsi Proxy Auth Cloud SQL, lihat Opsi untuk mengautentikasi Proxy Auth Cloud SQL.
- Menggunakan autentikasi Google Cloud SDK:
Docker
Untuk menjalankan Proxy Auth Cloud SQL pada container Docker, gunakan image Docker Proxy Auth Cloud SQL 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 konsol Google Cloud. atau dengan menjalankan perintah berikut:
gcloud sql instances describe INSTANCE_NAME
Misalnya: myproject:myregion:myinstance
.
Anda dapat memulai Proxy Auth Cloud SQL menggunakan soket TCP atau soket Unix tergantung pada bahasa dan lingkungan. 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.14.1 \\ --address 0.0.0.0 --port 3306 \\ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
Apabila 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
pada -p sehingga Proxy Auth Cloud SQL tidak
diekspos ke luar host lokal. "0.0.0.0" pada parameter instance
diperlukan agar port dapat diakses dari luar container
Docker.
Menggunakan soket Unix
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.14.1 --unix-socket=/cloudsql \\ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
Apabila 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
Apabila Anda menggunakan image yang dioptimalkan untuk container, gunakan direktori yang dapat ditulis
sebagai pengganti /cloudsql
, contohnya:
-v /mnt/stateful_partition/cloudsql:/cloudsql
Anda dapat menentukan lebih dari satu instance yang dipisahkan dengan koma. Anda juga dapat menggunakan metadata Compute Engine untuk menentukan instance yang akan dihubungkan secara dinamis. Pelajari parameter Proxy Auth Cloud SQL lebih lanjut.
Terhubung dengan klien mysql
- 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, lihat Menginstal dan Mengupgrade MySQL.
String koneksi yang digunakan bergantung pada apakah Anda memulai Proxy Auth Cloud SQL menggunakan soket TCP atau 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
Ketika Anda terhubung menggunakan soket TCP, Proxy Auth Cloud SQL akan 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
Catatan: Anda tidak dapat menggunakan Proxy Auth Cloud SQL melalui koneksi soket UNIX ke instance MySQL 8.4.
- Masukkan sandi
- Perintah mysql akan muncul.
Butuh bantuan? Untuk menemukan bantuan pemecahan masalah proxy, lihat Memecahkan masalah koneksi Proxy Auth Cloud SQL, atau lihat halaman Dukungan Cloud SQL.
Menghubungkan dengan aplikasi
Anda dapat terhubung ke Proxy Auth Cloud SQL dari berbagai bahasa yang membantu untuk terhubung ke soket Unix atau TCP. Di bawah ini terdapat beberapa cuplikan kode dari contoh lengkap di GitHub untuk membantu memahami cara kerja dalam aplikasi.
Topik tambahan
Argumen command line Proxy Auth Cloud SQL
Contoh di atas termasuk kasus penggunaan paling umum, namun Proxy Auth Cloud SQL
juga memiliki opsi konfigurasi lain yang dapat disetel dengan argumen
command line. Untuk mendapatkan bantuan terkait argumen command line, gunakan flag --help
untuk melihat dokumentasi terbaru:
./cloud-sql-proxy --help
Lihat README pada repositori GitHub Proxy Auth Cloud SQL untuk menemukan contoh tambahan terkait cara menggunakan opsi command line Proxy Auth Cloud SQL.
Opsi untuk mengautentikasi Proxy Auth Cloud SQL
Semua opsi ini menggunakan INSTANCE_CONNECTION_NAME sebagai string koneksi untuk mengidentifikasi instance Cloud SQL. Anda dapat menemukan INSTANCE_CONNECTION_NAME pada halaman Ringkasan untuk instance dalam konsol Google Cloud. atau dengan menjalankan perintah berikut:
gcloud sql instances describe --project PROJECT_ID INSTANCE_CONNECTION_NAME
.
Sebagai contoh: gcloud sql instances describe --project myproject myinstance
.
Beberapa opsi ini menggunakan file kredensial JSON yang mencakup kunci pribadi RSA untuk akun tersebut. Untuk menemukan petunjuk terkait cara membuat file kredensial JSON untuk akun layanan, lihat Membuat akun layanan.
Proxy Auth Cloud SQL menyediakan beberapa alternatif untuk autentikasi tergantung pada lingkungan. Proxy Auth Cloud SQL menggunakan item pertama yang ditemukan saat percobaan autentikasi untuk mengecek setiap item sesuai urutan berikut:
Kredensial yang disediakan oleh flag file kredensial.
Gunakan akun layanan untuk membuat dan mendownload file JSON terkait dan tetapkan flag--credentials-file
ke jalur file saat Anda memulai Proxy Auth Cloud SQL. Akun layanan harus memiliki izin yang diperlukan untuk instance Cloud SQL.Untuk menggunakan opsi ini pada command line, panggil perintah
cloud-sql-proxy
dengan flag--credentials-file
yang ditetapkan ke nama file dan jalur file kredensial JSON. Jalur tersebut dapat bersifat absolut atau relatif sesuai direktori kerja saat ini. Contoh:./cloud-sql-proxy --credentials-file PATH_TO_KEY_FILE \ INSTANCE_CONNECTION_NAME
Untuk informasi lebih lanjut terkait cara menambahkan peran IAM ke akun layanan, lihat Memberikan peran ke Akun Layanan.
Untuk informasi lebih lanjut terkait peran yang didukung Cloud SQL, lihat Peran IAM untuk Cloud SQL.
Kredensial yang disediakan oleh token akses.
Buat token akses dan panggil perintahcloud-sql-proxy
dengan flag--token
yang ditetapkan ke token akses OAuth 2.0. Contoh:./cloud-sql-proxy --token ACCESS_TOKEN \ INSTANCE_CONNECTION_NAME
Kredensial yang disediakan oleh variabel lingkungan.
Opsi ini mirip dengan menggunakan flag--credentials-file
, kecuali Anda menentukan file kredensial JSON yang ditetapkan dalamGOOGLE_APPLICATION_CREDENTIALS
variabel lingkungan daripada menggunakan argumen command line--credentials-file
.Kredensial dari klien gcloud CLI yang diautentikasi.
Apabila Anda telah menginstal gcloud CLI dan melakukan autentikasi dengan akun pribadi, Proxy Auth Cloud SQL dapat menggunakan kredensial akun yang sama. Metode ini sangat membantu untuk mendapatkan lingkungan pengembangan dan menjalankannya.
Untuk mengaktifkan Proxy Auth Cloud SQL AGAR dapat menggunakan kredensial gcloud CLI, gunakan perintah berikut untuk mengautentikasi gcloud CLI:
gcloud auth application-default login
Kredensial yang terkait dengan instance Compute Engine.
Apabila terhubung ke Cloud SQL dari instance Compute Engine, Proxy Auth Cloud SQL dapat menggunakan akun layanan yang terkait dengan instance Compute Engine. Apabila akun layanan memiliki izin yang diperlukan untuk instance Cloud SQL, autentikasi Proxy Auth Cloud SQL akan berhasil.Apabila instance Compute Engine berada dalam project yang sama dengan instance Cloud SQL, akun layanan default untuk instance Compute Engine memiliki izin yang diperlukan untuk mengautentikasi Proxy Auth Cloud SQL. Apabila kedua instance berada di project berbeda, Anda harus menambahkan akun layanan instance Compute Engine ke project yang berisi instance Cloud SQL.
Akun layanan default lingkungan
Apabila Proxy Cloud SQL tidak dapat menemukan kredensial di tempat mana pun yang telah dibahas sebelumnya, proxy tersebut mengikuti logika yang didokumentasikan dalam Menyiapkan Autentikasi untuk Server ke Aplikasi Produksi Server. Beberapa lingkungan (seperti Compute Engine, App Engine, dan lainnya) menyediakan akun layanan default yang dapat digunakan oleh aplikasi untuk melakukan autentikasi secara default. Apabila menggunakan akun layanan, akun tersebut harus memiliki izin yang diuraikan dalam peran dan izin Untuk informasi lebih lanjut terkait pendekatan autentikasi Google Cloud, lihat Ringkasan autentikasi.
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. Jaga agar file kunci tetap aman.
Menggunakan Proxy Auth Cloud SQL dengan IP pribadi
Untuk terhubung ke instance Cloud SQL menggunakan IP pribadi, Proxy Auth Cloud SQL harus berada pada resource dengan akses ke jaringan VPC yang sama sebagai instance.
Proxy Auth Cloud SQL menggunakan IP untuk membangun koneksi dengan instance Cloud SQL. Proxy Auth Cloud SQL mencoba untuk terhubung menggunakan alamat IPv4 publik secara default.
Apabila instance Cloud SQL hanya memiliki IP pribadi atau instance tersebut memiliki IP pribadi dan publik yang dikonfigurasi kemudian ingin Proxy Auth Cloud SQL tersebut menggunakan alamat IP pribadi, maka Anda harus menyediakan opsi berikut ketika memulai Proxy Auth Cloud SQL:
--private-ip
Menggunakan Proxy Auth Cloud SQL dengan instance yang mengaktifkan Private Service Connect
Anda dapat menggunakan Proxy Auth Cloud SQL untuk terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan.
Proxy Auth Cloud SQL adalah konektor yang memberikan akses aman ke instance ini tanpa memerlukan jaringan resmi atau untuk mengonfigurasi SSL.
Untuk mengizinkan koneksi klien Proxy Auth Cloud SQL, Anda harus menyiapkan data DNS yang cocok dengan nama DNS yang direkomendasikan, yang disediakan untuk instance. Pencatatan DNS adalah pemetaan antara sumber daya DNS dan nama domain.
Untuk informasi selengkapnya tentang cara menggunakan Proxy Auth Cloud SQL untuk terhubung ke instance dengan Private Service Connect yang diaktifkan, lihat Menghubungkan menggunakan Proxy Auth Cloud SQL.
Membuat akun pengguna database untuk Proxy Auth Cloud SQL
Saat terhubung ke instance menggunakan Proxy Auth Cloud SQL, Anda memberikan akun pengguna untuk login ke instance. Untuk tujuan ini, Anda dapat menggunakan akun pengguna database apa pun. Namun, karena Proxy Auth Cloud SQL selalu terhubung dari nama host yang tidak dapat diakses kecuali oleh Proxy Auth Cloud SQL, Anda dapat membuat akun pengguna yang hanya dapat digunakan oleh Proxy Auth Cloud SQL. Keuntungan melakukannya adalah Anda dapat menentukan akun ini tanpa sandi tanpa mengorbankan keamanan instance atau data Anda.
Untuk membuat akun pengguna yang hanya dapat digunakan dengan Proxy Auth Cloud SQL, tentukan
nama host sebagai 'cloudsqlproxy~[IP_ADDRESS]'
. Anda juga dapat menggunakan karakter pengganti
alamat IP, yang akan menghasilkan 'cloudsqlproxy~%'
. Nama lengkap akun pengguna
adalah:
'[USER_NAME]'@'cloudsqlproxy~%'
atau
'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
Untuk bantuan dalam membuat pengguna, lihat Membuat dan Mengelola Pengguna. Untuk mengetahui informasi tentang cara kerja Cloud SQL dengan akun pengguna, lihat Pengguna.
Menjalankan Proxy Auth Cloud SQL dalam proses terpisah
Menjalankan Proxy Auth Cloud SQL dalam proses terminal Cloud Shell terpisah berguna untuk menghindari percampuran output konsol tersebut dengan output program lainnya. Gunakan sintaksis yang ditampilkan di bawah ini untuk memanggil Proxy Auth Cloud SQL dalam proses terpisah.
Linux
Pada Linux atau macOS, gunakan tanda penghubung &
pada command line untuk
meluncurkan Proxy Auth Cloud SQL dalam proses terpisah:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME
--credentials-file PATH_TO_KEY_FILE &
Windows
Pada Windows PowerShell, gunakan perintah Start-Process
untuk meluncurkan
Proxy Auth Cloud SQL dalam proses terpisah:
Start-Process --filepath "cloud-sql-proxy.exe"
--ArgumentList "
--credentials-file PATH_TO_KEY_FILEINSTANCE_CONNECTION_NAME"
Menjalankan Proxy Auth Cloud SQL di container Docker
Untuk menjalankan Proxy Auth Cloud SQL pada container Docker, gunakan image Docker Proxy Auth Cloud SQL
yang tersedia dari
Google Container Registry.
Anda dapat menginstal image Docker Proxy Auth Cloud SQL dengan perintahgcloud
ini:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1
Anda dapat memulai Proxy Auth Cloud SQL menggunakan soket TCP atau soket Unix, dengan perintah yang ditampilkan di bawah ini.
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.14.1 \ --address 0.0.0.0 \ --credentials-file /path/to/service-account-key.json \ INSTANCE_CONNECTION_NAME
Soket Unix
docker run -d \ -v /PATH_TO_HOST_TARGET:/PATH_TO_GUEST_TARGET \ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1 --unix-socket /cloudsql \ --credentials-file /path/to/service-account-key.json/PATH_TO_KEY_FILE \ INSTANCE_CONNECTION_NAME
Apabila menggunakan image yang dioptimalkan untuk kontainer, gunakan direktori yang dapat ditulis
sebagai pengganti /cloudsql
, sebagai contoh:
v /mnt/stateful_partition/cloudsql:/cloudsql
Apabila menggunakan kredensial yang disediakan oleh instance Compute Engine,
jangan sertakan parameter credential_file
dan baris
-v PATH_TO_KEY_FILE:/path/to/service-account-key.json
.
Menjalankan Proxy Auth Cloud SQL sebagai layanan
Menjalankan Proxy Auth Cloud SQL sebagai layanan latar belakang adalah opsi untuk pengembangan lokal dan beban kerja produksi. Ketika perlu mengakses instance Cloud SQL dalam pengembangan, Anda dapat memulai layanan di latar belakang dan menghentikannya setelah selesai.
Proxy Auth Cloud SQL saat ini tidak menyediakan dukungan bawaan untuk dijalankan sebagai layanan Windows, namun pengelola layanan pihak ketiga dapat digunakan untuk menjalankan proxy sebagai layanan untuk beban kerja produksi. Sebagai contoh, Anda dapat menggunakan NSSM untuk mengonfigurasi Proxy Auth Cloud SQL sebagai layanan Windows, kemudian NSSM memantau Proxy Auth Cloud SQL dan memulai ulang secara otomatis apabila berhenti merespons. Lihat Dokumentasi NSSM untuk informasi lebih lanjut.
Menerapkan penggunaan Proxy Auth Cloud SQL
Aktifkan penggunaan Proxy Auth Cloud SQL pada Cloud SQL menggunakan ConnectorEnforcement.
Jika Anda menggunakan instance yang mengaktifkan Private Service Connect, akan ada batasan. Jika instance mengaktifkan penerapan konektor, Anda tidak dapat membuat replika baca untuk instance tersebut. Demikian pula, jika instance memiliki replika baca, Anda tidak dapat mengaktifkan penerapan konektor untuk instance tersebut.
gcloud
Perintah berikut menerapkan penggunaan konektor Cloud SQL.
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement REQUIRED
Untuk menonaktifkan penerapan tersebut, gunakan baris kode berikut:
--connector-enforcement NOT_REQUIRED
Pembaruan tidak akan memicu mulai ulang.
REST v1
Perintah berikut menerapkan konektor Cloud SQL
Sebelum menggunakan data permintaan apa pun, lakukan penggantian sebagai berikut:
- project-id: Project ID.
- instance-id: ID instance.
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Meminta isi JSON:
{ "settings": { "connectorEnforcement": "REQUIRED" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respon JSON serupa dengan yang berikut ini:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Untuk menonaktifkan penerapan, gunakan "connectorEnforcement": "NOT_REQUIRED"
sebagai gantinya. Pembaruan tersebut tidak memicu mulai ulang.
REST v1beta4
Perintah berikut menerapkan penggunaan konektor Cloud SQL.
Sebelum menggunakan data permintaan apa pun, lakukan penggantian sebagai berikut:
- project-id: Project ID.
- instance-id: ID instance.
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Meminta isi JSON:
{ "settings": { "connectorEnforcement": "REQUIRED" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respon JSON serupa dengan yang berikut ini:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Untuk menonaktifkan penerapan, gunakan "connectorEnforcement": "NOT_REQUIRED"
sebagai gantinya. Pembaruan tersebut tidak memicu mulai ulang.
Tips saat menggunakan Proxy Auth Cloud SQL
Memanggil Proxy Auth Cloud SQL
Semua contoh pemanggilan proxy memulai Proxy Auth Cloud SQL di latar belakang, sehingga prompt akan ditampilkan. Cadangkan terminal Cloud Shell untuk Proxy Auth Cloud SQL agar terhindar dari percampuran output tersebut dengan output program lain. Selain itu, output dari Proxy Auth Cloud SQL dapat membantu mendiagnosis masalah koneksi sehingga akan membantu merekam file log. Jika tidak memulai Proxy Auth Cloud SQL di latar belakang, output tersebut akan masuk ke stdout kecuali jika dialihkan.
Anda tidak perlu menggunakan /cloudsql
sebagai direktori untuk soket Proxy Auth Cloud SQL. (Nama
direktori tersebut dipilih untuk meminimalisir perbedaan dengan string koneksi
App Engine.) Tetap perhatikan panjang keseluruhan minimum
apabila ingin mengubah nama direktori; nama tersebut dimasukkan dalam string lebih panjang dengan batas
panjang yang diberlakukan oleh sistem operasi. Batas panjang tersebut tergantung pada sistem, biasanya
di antara 91-108 karakter. Di Linux, panjang tersebut ditetapkan sebagai 108 dan
Anda dapat memeriksanya menggunakan perintah berikut:
cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"
Menggunakan Proxy Auth Cloud SQL untuk terhubung ke beberapa instance
Anda dapat menggunakan satu klien Proxy Auth Cloud SQL lokal untuk terhubung dengan beberapa instance Cloud SQL. Cara melakukannya tergantung pada pilihan untuk menggunakan soket Unix atau TCP.
Soket Unix
Untuk menghubungkan Proxy Auth Cloud SQL ke beberapa instance, Anda perlu menyediakan setiap nama koneksi instance sebagai argumen bagi Proxy Auth Cloud SQL dalam daftar yang dipisahkan spasi. Proxy Auth Cloud SQL terhubung ke setiap instance ketika dimulai.
Anda terhubung ke setiap instance menggunakan soket proxy tersebut di direktori yang telah ditentukan.
Contoh:
./cloud-sql-proxy --unix-socket /cloudsql \ myProject:us-central1:myInstance myProject:us-central1:myInstance2 & mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance2
Soket TCP
Ketika terhubung menggunakan TCP, Anda menentukan port pada mesin untuk Proxy Auth Cloud SQL yang akan dipantau selama memproses setiap instance Cloud SQL. Ketika menghubungkan ke berbagai instance Cloud SQL, setiap port yang telah ditentukan harus unik dan tersedia untuk digunakan pada mesin.
Contoh:
# Start the Cloud SQL Auth Proxy to connect to two different Cloud SQL instances. # Give the Cloud SQL Auth Proxy a unique port on your machine to use for each Cloud SQL instance. ./cloud-sql-proxy "myProject:us-central1:myInstance?port=3306" \ "myProject:us-central1:myInstance2?port=1234" # Connect to "myInstance" using port 3306 on your machine: mysql -u myInstanceUser --host 127.0.0.1 --port 3306 # Connect to "myInstance2" using port 1234 on your machine: mysql -u myInstance2User --host 127.0.0.1 --port 1234
Memecahkan masalah koneksi Proxy Auth Cloud SQL
Image Docker Proxy Auth Cloud SQL berdasarkan versi tertentu Proxy Auth Cloud SQL. Ketika versi terbaru Proxy Auth Cloud SQL tersedia, tarik image Docker Proxy Auth Cloud SQL versi baru untuk menjaga lingkungan tetap menjadi yang terbaru. Lihat versi terbaru Proxy Auth Cloud SQL dengan mengecek halaman rilis Proxy Auth Cloud SQL.
Jika mendapat masalah saat menghubungkan ke instance Cloud SQL menggunakan Proxy Auth Cloud SQL, the Cloud SQL Auth Proxy, berikut adalah beberapa hal yang dapat dilakukan untuk menemukan penyebab masalah tersebut.
Pastikan Anda menggunakan alamat IP untuk terhubung ke instance, bukan endpoint tulis.
Mengecek output Proxy Cloud SQL.
Output Proxy Auth Cloud SQL sering kali dapat membantu menentukan sumber masalah dan bagaimana menyelesaikan masalah tersebut. Masukkan output ke file atau perhatikan terminal Cloud Shell tempat memulai Proxy Auth Cloud SQL.
Jika menemukan error
403 notAuthorized
dan sedang menggunakan akun layanan untuk mengautentikasi Proxy Auth Cloud SQL, pastikan akun layanan tersebut memiliki izin yang tepat.Anda dapat mengecek akun layanan dengan menelusuri ID akun tersebut pada Halaman IAM. Akun tersebut harus memiliki izin
cloudsql.instances.connect
. Peran yang telah ditetapkanCloud SQL Admin
,Client
danEditor
memiliki izin ini.Jika terhubung dari App Engine dan menemukan
403 notAuthorized
error, periksa nilaiapp.yaml
cloud_sql_instances
untuk mencari nama koneksi instance yang tidak tepat atau salah eja. Nama koneksi instance biasanya sesuai dengan formatPROJECT:REGION:INSTANCE
.Selain itu, periksa apakah akun layanan App Engine (misalnya, $PROJECT_ID@appspot.gserviceaccount.com) memiliki peran IAM Klien Cloud SQL.
Apabila layanan App Engine berada dalam salah satu project (project A) dan database berada di project lainnya (project B), error ini berarti akun layanan App Engine belum diberi peran IAM Klien Cloud SQL dalam project yang berisi database (project B).
Pastikan untuk mengaktifkan Cloud SQL Admin API.
Jika tidak, Anda akan melihat output seperti
Error 403: Access Not Configured
dalam log Proxy Auth Cloud SQL.Apabila menyertakan beberapa instance dalam daftar, pastikan untuk menggunakan koma sebagai pembatas tanpa spasi. Apabila menggunakan TCP, pastikan untuk menentukan port yang berbeda bagi setiap instance.
Apabila terhubung menggunakan soket Unix, lakukan konfirmasi bahwa soket tersebut telah dibuat dengan mencantumkan direktori yang disediakan saat memulai Proxy Auth Cloud SQL.
Apabila terdapat kebijakan firewall keluar, pastikan kebijakan tersebut mengizinkan koneksi ke port 3307 pada instance Cloud SQL target.
Anda dapat memastikan bahwa Proxy Auth Cloud SQL dimulai dengan benar dengan melihat log di bagian Operations > Logging > Logs explorer pada Google Cloud Console. Operasi yang berhasil akan terlihat seperti berikut:
2021/06/14 15:47:56 Listening on /cloudsql/$PROJECT_ID:$REGION:$INSTANCE_NAME/3306 for $PROJECT_ID:$REGION:$INSTANCE_NAME 2021/06/14 15:47:56 Ready for new connections
Masalah kuota: Apabila kuota Cloud SQL Admin API dilanggar, Proxy Auth Cloud SQL akan dimulai dengan pesan error berikut:
There was a problem when parsing a instance configuration but ignoring due to the configuration. Error: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceeded
Setelah aplikasi terhubung ke proxy, akan muncul laporan error seperti berikut:
failed to refresh the ephemeral certificate for $INSTANCE_CONNECTION_NAME: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceeded
Solusi: Identifikasi sumber masalah kuota, sebagai contoh, aplikasi menyalahgunakan konektor dan membuat koneksi baru yang tidak perlu, atau hubungi dukungan untuk meminta peningkatan kuota Cloud SQL Admin API. Apabila error kuota muncul saat memulai, aplikasi harus di-deploy kembali untuk memulai ulang proxy. Apabila error kuota muncul setelah memulai, deploy ulang tidak perlu dilakukan.
Langkah berikutnya
- Pelajari lebih lanjut tentang Proxy Auth Cloud SQL.
- Pelajari lebih lanjut terkait Identity and Access Management (IAM).
- Pelajari lebih lanjut tentang Akun Layanan.
- Pelajari tentang akses kontrol dua level untuk instance Cloud SQL.
- Buat pengguna dan database.
- Pelajari cara terhubung ke instance dari aplikasi Anda.
- Pelajari Klien MySQL.
- Pelajari opsi untuk dukungan.