בדף הזה מוסבר איך Cloud SQL פועל עם משתמשי MySQL. חשבונות משתמשים ב-MySQL מספקים אבטחה על ידי שליטה בגישה למסדי נתונים של MySQL.
לתיעוד מלא על משתמשים ב-MySQL, ראה בקרת גישה וניהול חשבונות בתיעוד של MySQL. במאמר יצירה וניהול של משתמשים מוסבר איך יוצרים ומנהלים משתמשים ב-Cloud SQL.
למה צריך חשבונות משתמשים ב-MySQL
חשבונות משתמשים ב-MySQL מאפשרים לכם להתחבר למכונה של Cloud SQL ולנהל אותה. חשבונות משתמשים נדרשים גם כדי שאפליקציות יוכלו לגשת למכונה שלכם.
הגבלות על משתמשי-על
ב-Cloud SQL לקוחות לא יכולים ליצור משתמשים עם מאפיינים של משתמש-על או לקבל גישה אליהם.
Cloud SQL ל-MySQL הוא שירות מנוהל, ולכן הוא מגביל את הגישה לטבלאות ולהליכי מערכת מסוימים.
הרשאות של שפת טיפול בנתונים (DML) ושפת הגדרת נתונים (DDL) מוגבלות בחלק מטבלאות הסכימה.
זו הרשימה של טבלאות המערכת של MySQL 5.6 בסכימה mysql שדורשות הרשאות כתיבה:
audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncheartbeatpluginprocusertables_priv
זו הרשימה של MySQL 5.7:
audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncgtid_executedheartbeatpluginprocusertables_priv
למידע נוסף על MySQL 8.0 ו-MySQL 8.4, קראו את המאמרים הרשאות משתמש ב-MySQL 8.0 (cloudsqlsuperuser) והרשאות משתמש ב-MySQL 8.4 (cloudsqlsuperuser).
פורמט חשבון המשתמש ב-MySQL
לחשבונות משתמשים ב-MySQL יש שני רכיבים: שם משתמש ושם מארח. שם המשתמש מזהה את המשתמש, ושם המארח מציין מאילו מארחים המשתמש יכול להתחבר. שם המשתמש ושם המארח משולבים כדי ליצור חשבון משתמש:
'<user_name>'@'<host_name>'
אפשר לציין כתובת IP ספציפית או טווח כתובות לשם המארח, או להשתמש בתו האחוז ("%") כדי להשאיר את שם המארח ללא הגבלה.
אם אתם מתחברים למכונה באמצעות כתובת IP ציבורית, אתם צריכים להוסיף את כתובת ה-IP הציבורית של הלקוח ככתובת מורשית, גם אם שם המארח של המשתמש לא מוגבל.
אם אתם מתחברים למכונה באמצעות נקודת קצה של Private Service Connect, אתם לא יכולים להגביל חשבון משתמש לפי שם מארח או כתובת IP.
נקודות הקצה של Private Service Connect משתמשות בתרגום כתובות רשת (NAT) כדי להמיר את כתובות ה-IP של הלקוחות לכתובות IP דינמיות מרשת משנה של NAT. מכיוון שהמכונה של Cloud SQL מקבלת חיבורים עם כתובות ה-IP המתורגמות הדינמיות האלה, ולא עם כתובת ה-IP או שם המארח המקוריים של הלקוח, המכונה דוחה את החיבור. אי אפשר לציין כתובת IP מתורגמת בחשבון המשתמש כי הכתובות המתורגמות הן דינמיות ומשתנות עם הזמן.
במקום זאת, צריך להשתמש בתו האחוז ('%') כדי להשאיר את שם המארח ללא הגבלה, למשל 'USER_NAME'@'%'.
חשבונות משתמשים מוגדרים גם לפי שם המשתמש וגם לפי שם המארח. לדוגמה, 'user'@'%' הוא חשבון משתמש שונה מ-'user'@'localhost'.
משתמש MySQL שמוגדר כברירת מחדל
כשיוצרים מכונות MySQL, יש להן חשבון משתמש אחד כברירת מחדל: 'root'@'%'. אתם משתמשים בחשבון הזה כדי להתחבר למכונה של מסד הנתונים ולנהל אותה בפעם הראשונה. למשתמש שמוגדר כברירת מחדל יש את כל הרשאות מסד הנתונים, חוץ מ-SUPER ו-FILE. ב-Cloud SQL, אי אפשר לשנות את השם של 'root'@'%'.
כברירת מחדל, ל-root'@'% אין סיסמה, ו-MySQL לא דורש להשתמש בסיסמה ל-root'@'%. עם זאת, מכיוון ש-root'@'% קיים ברוב ההתקנות של MySQL, המשתמש root'@'% הוא יעד נפוץ לגישה לא מורשית.
כל אדם או תוכנה שמקבלים גישה למכונה שלכם, מקבלים גישה כמעט בלתי מוגבלת למכונה ולנתונים שלכם, ויכולים לשלוט בהם. לכן, מומלץ להגדיר סיסמה חזקה למשתמש root'@'% או למחוק את המשתמש הזה. איך מגדירים את חשבון המשתמש שמוגדר כברירת מחדל
משתמשי מערכת
ב-Cloud SQL יש תמיכה במשתמשי המערכת הבאים:
root@localhost,root@127.0.0.1,root@::1משמשת כדי לספק את שירות מסד הנתונים המנוהל.
cloudsqlreplica@%משמש כמשתמש רפליקציה לרפליקות.
cloudsqlimport@localhost,cloudsqlimport@127.0.0.1משמש לייבוא נתונים.
cloudsqlexport@localhost,cloudsqlexport@127.0.0.1משמש לייצוא נתונים.
cloudsqloneshotמשמש לפעולות אחרות במסד הנתונים.
cloudsqlapplier@localhostמשמש לפעולות שכפול ברפליקה של שרת חיצוני או לשכפול בין גרסאות ראשיות.
cloudsqlobservabilityadminמשמש לתצפית על מסד הנתונים.
cloudiamgroup@'%'משמש לאימות של קבוצת IAM.
cloudsqlreadonlyמשמש לביצוע פעולות לקריאה בלבד בטבלאות המערכת.
cloudsqlreplicaindexמשמש לניהול אינדקסים משניים ברפליקות.
אי אפשר למחוק, לשנות או להקצות תפקידים במסד הנתונים למשתמשים האלה.
חשבונות משתמש אחרים ב-MySQL
אפשר גם ליצור חשבונות משתמשים אחרים ב-MySQL. זו שיטה מומלצת כי היא מאפשרת להשתמש בחשבונות משתמשים שונים ב-MySQL למטרות שונות.
אתם יכולים ליצור חשבון משתמש עם שם מארח מוגבל, או להשתמש בפקודות SQL כדי להגביל את ההרשאות בחשבונות המשתמשים.
למידע נוסף על שמות של חשבונות משתמשים, קראו את המאמר ציון שמות של חשבונות במסמכי התיעוד של MySQL. כדי ליצור משתמש MySQL חדש ב-Cloud SQL, קראו את המאמר יצירת משתמש.
הרשאות משתמש ב-MySQL 5.6 ו-5.7
ב-MySQL יש הרשאות מפורטות שאפשר לתת למשתמש או להסיר ממנו. כך אתם יכולים לקבוע מה המשתמש יכול לעשות במכונה שלכם.
למשתמשים שנוצרו באמצעות Cloud SQL יש את אותן הרשאות כמו למשתמש ברירת המחדל של MySQL. אפשר לשנות את ההרשאות שלהם באמצעות ההצהרות GRANT או REVOKE.
כשמשתמשים בלקוח mysql כדי ליצור משתמש, צריך להעניק לו הרשאות באופן מפורש באמצעות ההצהרה GRANT.
מידע נוסף על ההרשאות שנתמכות על ידי MySQL זמין במאמר ההרשאות שניתנות על ידי MySQL.
הרשאות משתמש ב-MySQL 8.0 (cloudsqlsuperuser)
ב-Cloud SQL ל-MySQL 8.0, כשיוצרים משתמש חדש שמשתמש באימות מובנה, המשתמש מקבל באופן אוטומטי את התפקיד cloudsqlsuperuser. התפקיד cloudsqlsuperuser הוא תפקיד ב-Cloud SQL שמכיל כמה הרשאות MySQL. התפקיד הזה נותן למשתמש את כל ההרשאות הסטטיות של MySQL, חוץ מ-SUPER ו-FILE.
התפקיד cloudsqlsuperuser תומך רק בהרשאות הדינמיות הבאות, שמבוססות על גרסאות משניות של MySQL 8.0:
MySQL 8.0.18
MySQL 8.0.26
MySQL 8.0.27
MySQL 8.0.28
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPT
MySQL 8.0.29 (הוצא משימוש)
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 ואילך
APPLICATION_PASSWORD_ADMINCONNECTION_ADMINROLE_ADMINSET_USER_IDXA_RECOVER_ADMINCLOUDSQL_SPECIAL_VARIABLES_ADMINFLUSH_OPTIMIZER_COSTSFLUSH_STATUSFLUSH_TABLESFLUSH_USER_RESOURCESINNODB_REDO_LOG_ENABLESHOW_ROUTINEAUTHENTICATION_POLICY_ADMINGROUP_REPLICATION_STREAMPASSWORDLESS_USER_ADMINAUDIT_ABORT_EXEMPTSENSITIVE_VARIABLES_OBSERVERFIREWALL_EXEMPTRESOURCE_GROUP_ADMINRESOURCE_GROUP_USER
התפקיד cloudsqlsuperuser לא תומך בפעולות של שפת הגדרת נתונים (DDL) במסד הנתונים של המערכת mysql.
כדי לראות את הרשימה המלאה של ההרשאות שניתנו לתפקיד cloudsqlsuperuser, מריצים את ההצהרה SHOW GRANTS בלקוח mysql:
SHOW GRANTS FOR 'cloudsqlsuperuser'
הרשאות משתמש ב-MySQL 8.4 (cloudsqlsuperuser)
בדומה ל-Cloud SQL ל-MySQL 8.0, ב-Cloud SQL ל-MySQL 8.4, כשיוצרים משתמש חדש שמשתמש באימות מובנה, המשתמש מקבל באופן אוטומטי את התפקיד cloudsqlsuperuser.
ב-MySQL 8.4, לתפקיד cloudsqlsuperuser יש את אותן הרשאות כמו ב-MySQL 8.0.x.
עם זאת, אלה ההבדלים העיקריים בין MySQL 8.4 ל-MySQL 8.0.x:
- ההרשאה
SET_USER_IDהוסרה והוחלפה בהרשאות החדשותALLOW_NONEXISTENT_DEFINERו-SET_ANY_DEFINER. - מעניקה את ההרשאה
FLUSH_PRIVILEGESכתת-קבוצה של ההרשאהRELOAD. ההרשאה הזו לא מחליפה את ההרשאהRELOAD, וההרשאהRELOADעדיין ניתנת לצורך תאימות לדורות קודמים. - מעניקה את ההרשאה החדשה
OPTIMIZE_LOCAL_TABLE.
בנוסף, ב-Cloud SQL ל-MySQL 8.4 לא ניתנות ההרשאות TRANSACTION_GTID_TAG או TELEMETRY_LOG_ADMIN שהתווספו ב-MySQL 8.4.
הרשאות משתמש ב-MySQL 9.7 (cloudsqlsuperuser)
ב-Cloud SQL ל-MySQL 9.7, בדומה ל-Cloud SQL ל-MySQL 8.0 ול-Cloud SQL ל-MySQL 8.4, כשיוצרים משתמש חדש שמשתמש באימות מובנה, המשתמש מקבל באופן אוטומטי את התפקיד cloudsqlsuperuser.
ב-MySQL 9.7, לתפקיד cloudsqlsuperuser יש את אותן הרשאות כמו ב-MySQL 8.4.
עם זאת, ב-MySQL 9.7 נוספה ההרשאה הבאה ל-cloudsqlsuperuser:
תפקידים ב-MySQL
אם אתם משתמשים ב-MySQL מגרסה 8.0 ואילך, אתם יכולים ליצור תפקידים בהתאמה אישית כדי לארגן ולהקצות הרשאות במסד הנתונים למשתמשי MySQL. כשיוצרים מכונה של Cloud SQL, אפשר להשתמש בתפקידים כדי לתת למשתמשים הרשאות ראשוניות למסד הנתונים.
מידע נוסף על יצירת תפקידים ב-MySQL ושימוש בהם זמין במאמר שימוש בתפקידים.
כשיוצרים משתמש מובנה של MySQL ב-Cloud SQL ל-MySQL ולא מקצים לו תפקידים במסד הנתונים, המשתמש המובנה של MySQL מקבל באופן אוטומטי את התפקיד cloudsqlsuperuser.
לחלופין, אתם יכולים ליצור משתמש MySQL חדש ולהקצות תפקיד או תפקידים שונים בהתאמה אישית עם הרשאות מפורטות יותר.
למידע נוסף על הקצאת תפקידים למשתמשים ב-Cloud SQL ל-MySQL, קראו את המאמר ניהול משתמשים באמצעות אימות מובנה.
תפקידי חובה למשתמשי MySQL
ב-MySQL, תפקידי חובה הם תפקידים שרוצים להקצות לכל משתמש במסד הנתונים. עם זאת, התפקידים לא נכנסים לתוקף עד שהם מופעלים. כדי להפעיל תפקידי חובה, צריך להפעיל את הדגל activate_all_roles_on_login או את הדגל activate_mandatory_roles.
ב-Cloud SQL ל-MySQL 9.7, הדגל activate_mandatory_roles מוגדר כברירת מחדל ל-on.
מידע נוסף זמין במאמר הפעלת תפקידים.
משתמשי IAM ותפקידים במסד הנתונים
כשיוצרים חשבון משתמש ב-IAM ב-Cloud SQL ל-MySQL ולא מקצים לו תפקידים במסד הנתונים, המשתמש לא מקבל תפקידים במסד הנתונים באופן אוטומטי.
אתם יכולים להקצות את התפקיד cloudsqlsuperuser ותפקידים בהתאמה אישית במסד הנתונים למשתמשים, לחשבונות שירות או לקבוצות ב-IAM. כדי לעשות את זה, אתם צריכים להקצות את התפקידים האלה במסד הנתונים כשאתם יוצרים או מעדכנים את החשבונות ב-IAM במכונה.
מידע נוסף על הקצאת תפקידים למשתמשי IAM זמין במאמר הקצאת תפקידים במסד הנתונים בזמן הוספת חשבון IAM למכונה.
המאמרים הבאים
- מגדירים את חשבון המשתמש
rootבמכונה. - יצירה וניהול של משתמשים.
- יצירה וניהול של מסדי נתונים
- למידע נוסף על משתמשי MySQL
- במסמכי התיעוד של MySQL אפשר לקרוא על ההרשאות ש-MySQL מספקת.
- מידע ולמידה על אפשרויות להתחברות למכונה