מבוא
בדרך כלל, בעיות בחיבור משתייכות לאחד משלושת התחומים הבאים:
- מתבצעת התחברות – האם יש לך גישה למכונה דרך הרשת?
- הרשאה – האם יש לכם הרשאה להתחבר למופע?
- אימות – האם מסד הנתונים מקבל את פרטי הכניסה שלכם למסד הנתונים?
כל אחד מהם יכול להתפצל לנתיבים שונים לצורך בדיקה. בקטע הבא מופיעות דוגמאות לשאלות שכדאי לשאול את עצמכם כדי לצמצם את הבעיה:
רשימת משימות לפתרון בעיות בחיבור
- מתבצע חיבור
- כתובת IP פרטית
- האם הפעלת את
Service Networking APIבפרויקט? - האם אתם משתמשים ב-VPC משותף?
- האם למשתמש או לחשבון השירות יש את הרשאות ה-IAM הנדרשות לניהול חיבור של גישה לשירותים פרטיים?
- האם חיבור גישה לשירותים פרטיים מוגדר לפרויקט שלכם?
- הקציתם טווח כתובות IP לחיבור הפרטי?
- האם טווח כתובות ה-IP שהוקצה כולל לפחות מרחב של /24 לכל אזור שבו אתם מתכננים ליצור מופעי MySQL?
- אם אתם מציינים טווח כתובות IP שהוקצו למופעי mysql, האם הטווח מכיל לפחות מקום ל- /24 לכל אזור שבו אתם מתכננים ליצור מופעי mysql בטווח הזה?
- האם נוצר חיבור פרטי?
- אם החיבור הפרטי השתנה, האם החיבורים בין רשתות ה-VPC עודכנו?
- האם יומני ה-VPC מציינים שגיאות כלשהן?
- האם כתובת ה-IP של מכשיר המקור היא כתובת שאינה RFC 1918?
- כתובת IP ציבורית
- האם כתובת ה-IP של המקור מופיעה כרשת מורשית?
- האם נדרשים אישורי SSL/TLS?
- האם למשתמש או לחשבון השירות יש את הרשאות ה-IAM הנדרשות כדי להתחבר למופע Cloud SQL?
- אישור הרשאה
- שרת proxy ל-Cloud SQL Auth
- האם שרת ה-Proxy ל-Cloud SQL Auth מעודכן?
- האם שרת ה-Proxy ל-Cloud SQL Auth פועל?
- האם שם החיבור של המופע נוצר בצורה נכונה בפקודת החיבור של שרת ה-proxy ל-Cloud SQL Auth?
- האם בדקת את הפלט של שרת ה-proxy ל-Cloud SQL Auth? מעבירים את הפלט לקובץ או צופים בטרמינל Cloud Shell שבו הפעלתם את שרת ה-proxy ל-Cloud SQL Auth.
- האם למשתמש או לחשבון השירות יש את הרשאות ה-IAM הנדרשות כדי להתחבר למופע Cloud SQL?
- האם הפעלת את
Cloud SQL Admin APIבפרויקט? - אם יש לכם מדיניות חומת אש ליציאה, ודאו שהיא מאפשרת חיבורים ליציאה 3307 במכונת היעד של Cloud SQL.
- אם אתם מתחברים באמצעות שקעי דומיין של UNIX, אתם יכולים לוודא שהשקעים נוצרו על ידי הצגת רשימת הספרייה שצוינה באמצעות -dir כשאתם מפעילים את שרת ה-proxy ל-Cloud SQL Auth.
- מחברים של Cloud SQL וקוד ספציפי לשפה
- האם מחרוזת החיבור נוצרה בצורה נכונה?
- האם השוויתם את הקוד שלכם לקוד לדוגמה בשפת התכנות שלכם?
- האם אתם משתמשים בסביבת זמן ריצה או במסגרת שאין לנו עבורה קוד לדוגמה?
- אם כן, חיפשת חומר עזר רלוונטי בקהילה?
- אישורי SSL/TLS בניהול עצמי
- האם הותקן אישור לקוח במחשב המקור?
- האם אישור הלקוח מאוית בצורה נכונה בארגומנטים של החיבור?
- האם אישור הלקוח עדיין בתוקף?
- האם מופיעות שגיאות כשמתחברים באמצעות SSL?
- האם אישור השרת עדיין בתוקף?
- רשתות מורשות
- האם כתובת ה-IP של המקור נכללת?
- האם אתם משתמשים בכתובת IP שהיא לא RFC 1918?
- האם אתם משתמשים בכתובת IP שלא נתמכת?
- כשלים בחיבור
- יש לך הרשאה להתחבר?
- האם מופיעות שגיאות שקשורות למגבלת החיבור?
- האם האפליקציה שלכם סוגרת את החיבורים בצורה תקינה?
- אימות
- אימות מקורי של מסד נתונים (שם משתמש/סיסמה)
- האם מופיעות שגיאות
access denied? - האם שם המשתמש והסיסמה נכונים?
- אימות מסד נתונים ב-IAM
- הפעלת את הדגל
cloudsql.iam_authenticationבמופע? - האם הוספת קישור למדיניות לחשבון?
- האם אתם משתמשים בשרת proxy ל-Cloud SQL Auth עם
-enable_iam_loginאו עם אסימון OAuth 2.0 כסיסמה למסד הנתונים? - אם משתמשים בחשבון שירות, האם משתמשים בשם האימייל המקוצר?
- מידע נוסף על אימות מסד נתונים של IAM ב-PostgreSQL
הודעות שגיאה
הודעות שגיאה ספציפיות של API מפורטות בדף ההפניה הודעות שגיאה.
פתרון בעיות נוספות בקישוריות
לבעיות אחרות, אפשר לעיין בקטע במאמר בנושא פתרון בעיות.
בעיות נפוצות בחיבור
מוודאים שהאפליקציה סוגרת את החיבורים בצורה תקינה
אם מופיעות שגיאות שמכילות את המחרוזת Aborted connection nnnn to db:, בדרך כלל זה מצביע על כך שהאפליקציה לא מפסיקה את החיבורים בצורה תקינה. גם בעיות ברשת יכולות לגרום לשגיאה הזו. השגיאה לא אומרת שיש בעיות במופע Cloud SQL. מומלץ גם להריץ את הפקודה tcpdump כדי לבדוק את החבילות ולזהות את מקור הבעיה.
דוגמאות לשיטות מומלצות לניהול חיבורים מפורטות במאמר ניהול חיבורים למסדי נתונים.
מוודאים שהתוקף של האישורים לא פג
אם המופע מוגדר לשימוש ב-SSL, עוברים אל הדף Cloud SQL Instances במסוף Google Cloud ופותחים את המופע. פותחים את הדף Connections (חיבורים), בוחרים בכרטיסייה Security (אבטחה) ומוודאים שאישור השרת תקף. אם התוקף שלו פג, צריך להוסיף אישור חדש ולעבור אליו.
אימות ההרשאה להתחבר
אם החיבורים נכשלים, צריך לבדוק שיש לכם הרשאה להתחבר:
- אם אתם נתקלים בבעיות בהתחברות באמצעות כתובת IP, למשל, אם אתם מתחברים מהסביבה המקומית שלכם באמצעות לקוח mysql, אתם צריכים לוודא שלכתובת ה-IP שממנה אתם מתחברים יש הרשאה להתחבר למכונת Cloud SQL.
חיבורים למכונת Cloud SQL באמצעות כתובת IP פרטית מקבלים הרשאה אוטומטית לטווח כתובות RFC 1918. כך, כל הלקוחות הפרטיים יכולים לגשת למסד הנתונים בלי לעבור דרך שרת proxy ל-Cloud SQL Auth. צריך להגדיר טווחי כתובות שהם לא RFC 1918 כרשתות מורשות.
כברירת מחדל, שירות Cloud SQL לא לומד נתיבים של תת-רשתות שאינן RFC 1918 מה-VPC. כדי לייצא נתיבים שאינם RFC 1918, צריך לעדכן את ה-peering של הרשת ל-Cloud SQL. לדוגמה:
gcloud compute networks peerings update cloudsql-mysql-googleapis-com \ --network=NETWORK \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
כתובת ה-IP הנוכחית שלך היא:
- אפשר לנסות את הפקודה
gcloud sql connectכדי להתחבר למכונה. הפקודה הזו מאשרת את כתובת ה-IP שלכם למשך זמן קצר. אפשר להריץ את הפקודה הזו בסביבה שבה מותקנים ה-CLI של gcloud ולקוח mysql. אפשר גם להריץ את הפקודה הזו ב-Cloud Shell, שזמין במסוףGoogle Cloud , ובו מותקנים מראש ה-CLI של gcloud ולקוח mysql. Cloud Shell מספק מכונה של Compute Engine שבה אפשר להשתמש כדי להתחבר ל-Cloud SQL. - מאפשרים באופן זמני לכל כתובות ה-IP להתחבר למופע. ל-IPv4
מזינים authorize
0.0.0.0/0(ל-IPv6, מזינים authorize::/0.
אימות אופן החיבור
אם מופיעה הודעת שגיאה כמו:ERROR 1045 (28000): Access denied for user 'root'@'1.2.3.4' (using password: NO)
כשמתחברים, מוודאים שמזינים סיסמה.
אם מופיעה הודעת שגיאה כמו:
ERROR 1045 (28000): Access denied for user 'root'@'1.2.3.4' (using password: YES)
כשמתחברים, צריך לוודא שמשתמשים בסיסמה הנכונה ושהחיבור מתבצע באמצעות SSL אם המופע דורש זאת.
קביעת האופן שבו מתבצעת יצירת החיבורים
כדי לראות מידע על החיבורים הנוכחיים, מתחברים למסד הנתונים ומריצים את הפקודה הבאה:
SHOW PROCESSLIST;
חיבורים שמוצגת בהם כתובת IP, כמו 1.2.3.4, מתבצעים באמצעות IP.
חיבורים עם cloudsqlproxy~1.2.3.4 משתמשים בשרת proxy ל-Cloud SQL Auth, או שהם נוצרו מ-App Engine. יכול להיות שחיבורים מ-localhost ישמשו חלק מתהליכי Cloud SQL פנימיים.
מגבלות על חיבורים
אין מגבלות על מספר השאילתות לשנייה (QPS) במכונות Cloud SQL. עם זאת, יש מגבלות על החיבור, הגודל והמאפיינים הספציפיים של App Engine. מידע נוסף זמין במאמר בנושא מכסות ומגבלות.
חיבורים למסדי נתונים צורכים משאבים בשרת ובאפליקציה שמבצעת את החיבור. כדי לצמצם את טביעת הרגל של האפליקציה ולהקטין את הסיכוי לחרוג ממגבלות החיבור ב-Cloud SQL, מומלץ תמיד להשתמש בשיטות טובות לניהול חיבורים. איך מנהלים חיבורים למסדי נתונים
הצגת החיבורים והשרשורים
אם מוצגת הודעת השגיאה 'יותר מדי חיבורים', או אם רוצים לגלות מה קורה במופע, אפשר להציג את מספר החיבורים והשרשורים באמצעות SHOW PROCESSLIST.
מריצים את הפקודה הבאה מ