בדף הזה מוסבר איך להשתמש בלקוח MySQL, שמותקן במכונת Compute Engine, כדי להתחבר ל-Cloud SQL.
אפשר להשתמש בכתובת IP פרטית, בכתובת IP ציבורית, בשרת proxy ל-Cloud SQL Auth או בקובץ אימג' של Docker של שרת proxy ל-Cloud SQL Auth.
הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה ב-Compute Engine שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מ-Compute Engine.
לפני שמתחילים
המשימה הזו לא כוללת הוראות להגדרת מכונת Compute Engine. אם אתם צריכים עזרה ביצירה ובהגדרה של מכונה של Compute Engine, תוכלו לעיין במאמרי העזרה של Compute Engine.
כתובת IP פרטית
כדי להתחבר ל-Cloud SQL ממכונת Compute Engine באמצעות כתובת IP פרטית, צריך להגדיר גישה לשירותים פרטיים בסביבה שלכם, ולהגדיר את מכונת Cloud SQL כך שתשתמש בכתובת IP פרטית. המופע של Compute Engine צריך להיות באותו אזור כמו המופע של Cloud SQL, וברשת שהוגדרה לחיבור פרטי. מידע נוסף
1. הגדרת כתובת IP פרטית למכונה
פועלים לפי ההוראות שבמאמר הגדרת קישוריות של כתובת IP פרטית.
2. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.
צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:
- ב-Linux, אפשר לעיין במאמר התחברות למכונות וירטואליות של Linux.
- ב-Windows, אפשר לעיין במאמר התחברות למכונות וירטואליות של Windows.
אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.
מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.
3. אם לקוח MySQL עדיין לא מותקן, מתקינים אותו במכונה של Compute Engine.
- מורידים את MySQL Community Server לפלטפורמה שלכם מדף ההורדה של MySQL Community Server.
שרת הקהילה כולל את לקוח MySQL. - מתקינים את Community Server לפי ההוראות בדף ההורדה.
מידע נוסף על התקנת MySQL זמין במאמר Installing and Upgrading MySQL.
4. מתחברים ללקוח mysql.
mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p
אפשר למצוא את כתובת ה-IP הפרטית בדף המכונות של Cloud SQL או באמצעות הפקודה הבאה של gcloud:
gcloud sql instances list
כתובת IP ציבורית
כדי להתחבר באמצעות כתובת IP ציבורית:
בלחיצה על תראו לי איך תקבלו הסבר מפורט על המשימה ישירות ב-Cloud Shell Editor:
1. מוסיפים כתובת IPv4 סטטית למכונת Compute Engine, אם עדיין אין לה כתובת כזו.
אי אפשר להתחבר ל-Compute Engine באמצעות IPv6. מידע על הוספת כתובת IP סטטית מופיע במאמר שמירת כתובת IP חיצונית סטטית חדשה במסמכי התיעוד של Compute Engine.
2. מאשרים את כתובת ה-IP הסטטית של מכונת Compute Engine כרשת שיכולה להתחבר למכונת Cloud SQL.
מידע נוסף זמין במאמר הגדרת גישה לחיבורי IP ציבוריים.
3. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.
צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:
- ב-Linux, אפשר לעיין במאמר התחברות למכונות וירטואליות של Linux.
- ב-Windows, אפשר לעיין במאמר התחברות למכונות וירטואליות של Windows.
אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.
מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.
4. אם לקוח MySQL עדיין לא מותקן, מתקינים אותו במכונה של Compute Engine.
- מורידים את MySQL Community Server לפלטפורמה שלכם מדף ההורדה של MySQL Community Server.
שרת הקהילה כולל את לקוח MySQL. - מתקינים את Community Server לפי ההוראות בדף ההורדה.
מידע נוסף על התקנת MySQL זמין במאמר Installing and Upgrading MySQL.
5. מתחברים ללקוח mysql.
mysql -h CLOUD_SQL_PUBLIC_IP_ADDR -u USERNAME -p
אפשר למצוא את כתובת ה-IP הציבורית בדף המכונות של Cloud SQL או על ידי הפעלת הפקודה gcloud הבאה:
gcloud sql instances list
דוגמה לחיבור באמצעות SSL מופיעה במאמר בנושא חיבור באמצעות SSL.
6. תוצג ההנחיה של mysql.
7. אם אתם צריכים להשאיר חיבורים לא בשימוש פעילים:
מגדירים את TCP keepalive.
מידע נוסף מופיע במאמר בנושא תקשורת בין המכונות לבין האינטרנט במאמרי העזרה של Compute Engine.
החיבורים נשארים פעילים באופן אוטומטי עבור מופעים.
שרת proxy ל-Cloud SQL Auth
כדי להתחבר באמצעות שרת proxy ל-Cloud SQL Auth מ-Compute Engine:1. מפעילים את Cloud SQL Admin API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
2. יוצרים חשבון שירות.
- נכנסים לדף Service accounts במסוף Google Cloud .
- בוחרים את הפרויקט שמכיל את מכונת Cloud SQL.
- לוחצים על יצירת חשבון שירות.
- בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
- משנים את מזהה חשבון השירות לערך ייחודי וקל לזיהוי, ואז לוחצים על יצירה והמשך.
-
לוחצים על השדה Select a role (בחירת תפקיד) ובוחרים באחד מהתפקידים הבאים:
- Cloud SQL > Cloud SQL Client
- Cloud SQL > Cloud SQL Editor
- Cloud SQL > Cloud SQL Admin
- לוחצים על Done כדי לסיים ליצור את חשבון השירות.
- לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות ניהול מפתחות.
- לוחצים על התפריט הנפתח Add key ואז על Create new key.
-
מוודאים שסוג המפתח הוא JSON ולוחצים על Create.
קובץ המפתח הפרטי יורד למחשב שלכם. אפשר להעביר אותו למיקום אחר. חשוב לשמור על קובץ המפתח מאובטח.
אם מכונת Compute Engine נמצאת בפרויקט אחר ממכונת Cloud SQL, צריך לוודא שלחשבון השירות שלה יש את ההרשאות המתאימות בפרויקט שמכיל את מכונת Cloud SQL:
- נכנסים לרשימת המכונות של Compute Engine במסוף Google Cloud .
- אם צריך, בוחרים את הפרויקט שמשויך למופע של Compute Engine.
- בוחרים את מופע Compute Engine כדי להציג את המאפיינים שלו.
- במאפיינים של מכונת Compute Engine, מעתיקים את השם של חשבון השירות.
- נכנסים לדף IAM & Admin Projects במסוף Google Cloud .
- בוחרים את הפרויקט שמכיל את מכונת Cloud SQL.
- מחפשים את השם של חשבון השירות.
-
אם חשבון השירות כבר מופיע ברשימה ומוקצה לו תפקיד שכולל את ההרשאה
cloudsql.instances.connect, אפשר להמשיך לשלב 4.התפקידים
Cloud SQL Client,Cloud SQL Editorו-Cloud SQL Adminמספקים את ההרשאה הנדרשת, וכך גם תפקידי הפרויקט מדור קודםEditorו-Owner. - אחרת, לוחצים על הוספה כדי להוסיף את חשבון השירות.
בתיבת הדו-שיח Add principals (הוספת חשבונות), מציינים את השם של חשבון השירות ובוחרים תפקיד שכולל את ההרשאה
cloudsql.instances.connect(כל תפקיד מוגדר מראש של Cloud SQL מלבד Viewer יתאים).אפשר גם להשתמש בתפקיד הבסיסי 'עריכה' על ידי בחירה באפשרות פרויקט > עריכה, אבל התפקיד הזה כולל הרשאות בכל Google Cloud.
אם אתם לא רואים את התפקידים האלה, יכול להיות שלמשתמש Google Cloud שלכם אין את ההרשאה
resourcemanager.projects.setIamPolicy. כדי לבדוק את ההרשאות, נכנסים לדף IAM במסוף Google Cloud ומחפשים את מזהה המשתמש.- לוחצים על הוספה.
חשבון השירות יופיע ברשימה עם התפקיד שצוין.
3. פותחים חיבור לטרמינל למכונה של Compute Engine.
צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:
- ב-Linux, אפשר לעיין במאמר התחברות למופעי Linux.
- ב-Windows, אפשר לעיין במאמר התחברות למופעי Windows.
אם מופעלת במכונת Compute Engine שלכם תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.
מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במאמרי העזרה של CentOS.
4. אם לקוח MySQL עדיין לא מותקן, מתקינים אותו במכונה של Compute Engine.
- מורידים את MySQL Community Server לפלטפורמה שלכם מדף ההורדה של MySQL Community Server.
שרת הקהילה כולל את לקוח MySQL. - מתקינים את Community Server לפי ההוראות בדף ההורדה.
מידע נוסף על התקנת MySQL זמין במאמר Installing and Upgrading MySQL.
5. מתקינים את Cloud SQL Auth Proxy במכונה של Compute Engine.
לפני שמתחילים, צריך לקבוע את הארכיטקטורה של המכונה.
אם מריצים ב-Linux או ב-Mac, אפשר למצוא את זה על ידי הרצת הפקודה הבאה:
uname -a
Linux 64 סיביות
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.amd64
- הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
Linux 32 סיביות
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.386
- אם הפקודה
curlלא נמצאה, מריצים את הפקודהsudo apt install curlוחוזרים על פקודת ההורדה. - הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
Windows 64 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x64.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.
Windows 32 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x86.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.
קובץ אימג' של Docker לשרת proxy ל-Cloud SQL Auth
לשרת ה-proxy ל-Cloud SQL Auth יש תמונות קונטיינר שונות, כמו distroless, alpine ו-buster. קובץ האימג' של קונטיינר ברירת המחדל של Cloud SQL Auth Proxy משתמש ב-distroless, שלא מכיל מעטפת. אם אתם צריכים מעטפת או כלים קשורים, אתם יכולים להוריד תמונה שמבוססת על alpine או על buster.
מידע נוסף זמין במאמר תמונות קונטיינר של Cloud SQL Auth Proxy.
אפשר למשוך את התמונה העדכנית ביותר למחשב המקומי באמצעות Docker באמצעות הפקודה הבאה:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.0
מערכת הפעלה אחרת
במערכות הפעלה אחרות שלא נכללות כאן, אפשר לקמפל את שרת ה-proxy ל-Cloud SQL Auth ממקור.6. מפעילים את שרת ה-proxy ל-Cloud SQL Auth.
בהתאם לשפה ולסביבה שלכם, אתם יכולים להפעיל את שרת ה-proxy ל-Cloud SQL Auth באמצעות שקעי TCP, שקעי Unix או קובץ אימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth. קובץ הבינארי של שרת ה-proxy ל-Cloud SQL Auth מתחבר למכונה אחת או יותר של Cloud SQL שצוינו בשורת הפקודה, ופותח חיבור מקומי כ-TCP או כשקע Unix. אפליקציות ושירותים אחרים, כמו קוד האפליקציה או כלי לקוח לניהול מסדי נתונים, יכולים להתחבר למכונות של Cloud SQL דרך חיבורי TCP או Unix socket.
שקעי TCP
בחיבורי TCP, שרת ה-Proxy ל-Cloud SQL Auth מאזין ל-localhost(127.0.0.1) כברירת מחדל.
לכן, כשמציינים --port PORT_NUMBER למכונה, החיבור המקומי הוא בכתובת 127.0.0.1:PORT_NUMBER.
אפשר גם לציין כתובת אחרת לחיבור המקומי.
לדוגמה, כך מגדירים את שרת ה-proxy ל-Cloud SQL Auth להאזין בכתובת 0.0.0.0:1234 לחיבור המקומי:
./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
מעתיקים את INSTANCE_CONNECTION_NAME. אפשר למצוא את כתובת ה-IP בדף Overview של המופע במסוףGoogle Cloud או על ידי הפעלת הפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
לדוגמה: myproject:myregion:myinstance.
- אם למכונה מוגדרות כתובות IP ציבוריות ופרטיות, ואתם רוצים ששרת proxy ל-Cloud SQL Auth ישתמש בכתובת IP פרטית, אתם צריכים לספק את האפשרות הבאה כשמפעילים את שרת proxy ל-Cloud SQL Auth:
--private-ip
- אם אתם משתמשים בחשבון שירות כדי לאמת את שרת ה-proxy ל-Cloud SQL Auth, שימו לב למיקום במכונת הלקוח של קובץ המפתח הפרטי שנוצר כשנוצר חשבון השירות.
- מפעילים את שרת ה-proxy ל-Cloud SQL Auth.
מחרוזות אפשריות להפעלת שרת proxy ל-Cloud SQL Auth:
- שימוש באימות Cloud SDK:
היציאה שצוינה לא יכולה להיות בשימוש, למשל על ידי שרת מסד נתונים מקומי../cloud-sql-proxy --port 3306 INSTANCE_CONNECTION_NAME
- שימוש בחשבון שירות וציון השם של חיבור המופע (מומלץ לסביבות ייצור):
./cloud-sql-proxy \ --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
מידע נוסף על האפשרויות של Cloud SQL Auth Proxy זמין במאמר אפשרויות לאימות של Cloud SQL Auth Proxy.
- שימוש באימות Cloud SDK:
שקעי Unix
שרת proxy ל-Cloud SQL Auth יכול להאזין לשקע Unix, שהוא מנגנון תקני של Posix לשימוש בתיקייה כדי לנהל תקשורת בין שני תהליכים שפועלים באותו מארח. היתרונות של שימוש ב-Unix sockets הם אבטחה משופרת וזמן אחזור נמוך יותר, אבל אי אפשר לגשת ל-Unix socket ממכונה חיצונית.
כדי ליצור שקע Unix ולהשתמש בו, ספריית היעד צריכה להתקיים ולשרת ה-proxy ל-Cloud SQL Auth וליישום צריכות להיות הרשאות קריאה וכתיבה אליה.
מעתיקים את INSTANCE_CONNECTION_NAME. אפשר למצוא את כתובת ה-IP בדף Overview של המופע במסוףGoogle Cloud או על ידי הפעלת הפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
לדוגמה: myproject:myregion:myinstance.
- יוצרים את הספרייה שבה יאוחסנו שקעי Cloud SQL Auth Proxy:
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- אם אתם משתמשים בחשבון שירות כדי לאמת את שרת ה-proxy ל-Cloud SQL Auth, שימו לב למיקום במכונת הלקוח של קובץ המפתח הפרטי שנוצר כשנוצר חשבון השירות.
- פותחים חלון טרמינל חדש ב-Cloud Shell ומפעילים את Cloud SQL Auth Proxy.
מחרוזות אפשריות להפעלת שרת proxy ל-Cloud SQL Auth:
- שימוש באימות של Google Cloud SDK:
./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
- שימוש בחשבון שירות:
./cloud-sql-proxy --unix-socket /cloudsql --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
מפעילים את Cloud SQL Auth Proxy במסוף Cloud Shell משלו, כדי שתוכלו לעקוב אחרי הפלט שלו בלי שהוא יתערבב עם הפלט מתוכניות אחרות.
מידע נוסף על האפשרויות של Cloud SQL Auth Proxy זמין במאמר אפשרויות לאימות של Cloud SQL Auth Proxy.
- שימוש באימות של Google Cloud SDK:
Docker
כדי להריץ את שרת ה-proxy ל-Cloud SQL Auth במאגר Docker, משתמשים בקובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth שזמין ב-Google Container Registry.
אפשר להפעיל את Cloud SQL Auth Proxy באמצעות שקעי TCP או שקעי Unix, עם הפקודות שמוצגות בהמשך. האפשרויות משתמשות ב-INSTANCE_CONNECTION_NAME כמחרוזת החיבור כדי לזהות מכונת Cloud SQL. אפשר למצוא את INSTANCE_CONNECTION_NAME בדף Overview של המופע במסוףGoogle Cloud , או על ידי הפעלת הפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME
לדוגמה: myproject:myregion:myinstance.
בהתאם לשפה ולסביבה שלכם, אתם יכולים להפעיל את שרת ה-proxy ל-Cloud SQL Auth באמצעות שקעי TCP או שקעי Unix. אין תמיכה בשקעי Unix באפליקציות שנכתבו בשפת התכנות Java או בסביבת Windows.
שימוש בשקעי 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.0 \\ --address 0.0.0.0 --port 3306 \\ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
אם אתם משתמשים בפרטי הכניסה שסופקו על ידי המכונה של Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.
תמיד מציינים את הקידומת 127.0.0.1 ב--p כדי ששרת ה-proxy ל-Cloud SQL Auth לא ייחשף מחוץ למארח המקומי. הערך '0.0.0.0' בפרמטר instances נדרש כדי שהיציאה תהיה נגישה מחוץ לקונטיינר Docker.
שימוש בסוקטים של 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.26.0 --unix-socket=/cloudsql \\ --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME
אם אתם משתמשים בפרטי הכניסה שסופקו על ידי המכונה של Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.
אם אתם משתמשים בקובץ אימג' שעבר אופטימיזציה לקונטיינר, צריך להשתמש בספרייה שאפשר לכתוב בה במקום /cloudsql, לדוגמה:
-v /mnt/stateful_partition/cloudsql:/cloudsql
אפשר לציין יותר ממופע אחד, ולהפריד ביניהם באמצעות פסיקים. אפשר גם להשתמש במטא-נתונים של Compute Engine כדי לקבוע באופן דינמי את המופעים להתחברות. מידע נוסף על הפרמטרים של Cloud SQL Auth Proxy
7. מתחילים את סשן mysql.
מחרוזת החיבור שבה אתם משתמשים תלויה בדרך שבה הפעלתם את שרת ה-proxy ל-Cloud SQL Auth: באמצעות שקע TCP, שקע UNIX או Docker.
שקעי TCP
- מפעילים את לקוח MySQL:
אם אתם מתחברים למופע MySQL 8.4, אתם צריכים להשתמש בפקודה הבאה:mysql -u USERNAME -p --host 127.0.0.1
mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key
כשמתחברים באמצעות שקעי TCP, מתבצעת גישה ל-Cloud SQL Auth Proxy דרך
127.0.0.1. - אם מתבקשים, מזינים את הסיסמה.
- תוצג ההנחיה של mysql.
שימוש בסוקטים של Unix
- מפעילים את לקוח MySQL:
mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME --get-server-public-key
- מזינים את הסיסמה.
- תוצג ההנחיה של mysql.
דרושה לך עזרה? לפתרון בעיות בשרת ה-proxy, אפשר לעיין במאמר פתרון בעיות בחיבורים של שרת proxy ל-Cloud SQL Auth או בדף תמיכה ב-Cloud SQL.
המאמרים הבאים
- פתרון בעיות בחיבור לשרת proxy ל-Cloud SQL Auth.
- יוצרים משתמשים ומסדי נתונים.
- מידע נוסף על כתובות IP פרטיות
- אפשרויות לחיבור המכונה לאפליקציה
- מידע על לקוח mysql
- מידע על כלי ניהול אחרים של MySQL
- מידע על אפשרויות התמיכה