תכונה אופיינית של MySQL היא האבטחה שלה, המסתמכת על הגנה חיצונית. כמערכת מודרנית, מלאה ויעילה לניהול מסדי נתונים, ל-MySQL יש כלים משלה לניהול משתמשים וגישה שלהם למשאבים שהיא שולטת בו.
אם אינך יודע את שם המשתמש והסיסמה הנכונים, הגישה למסד הנתונים דרך MySQL היא קשה מאוד.
במצב אירוח רגיל, זה מספיק. מצבים בלתי צפויים, התקפות האקרים וצרות אחרות הם עניין של ניהול מערכת חיצוני ושירותי אבטחה. מושג זה הפך למסורתי וכמעט ולא נדון בו.
התקן שרת MySQL ושורש משתמש
בכל סביבת הפעלה מותקנת מערכת ניהול מסד הנתונים, תמיד יש לה לפחות משתמש אחד: root. התקן את MySQL, צור משתמש עם כל זכויות השורש - בלי זה, תעבוד איתושרת אינו אפשרי. ההרשאות של משתמש זה מספיקות כדי:
- צור ומנהל משתמשים חדשים;
- צור ונהל מסדי נתונים.
זה אפשרי ביסודו של משתמשים "ללא סיסמה" להתקיים ב-MySQL, אבל זה לא מקובל.
נוהג נפוץ:
- שרת מותקן במחשב משלו, שבו ניתן להתקין אירוח (אפשרות מקומית);
- שרת נמצא באירוח ציבורי באינטרנט.
במקרה הראשון אפשר לעבוד עם השרת משורת הפקודה ולהשתמש ב-phpMyAdmin, במקרה השני רק phpMyAdmin או כלי דומה, אך ניתן לגשת לשורת הפקודה דרך גישת SSH מרחוק.
כלי ניהול משלו
תחושת קרבה עם משפחת Unixoid ועם העבר משרתי Apache היא סימן היכר של MySQL: create user היא שורת פקודה עם תחביר מוזר. עבור אנשי מקצוע שעובדים עם לינוקס ומערכות דומות, זה מוכר כמו שזה נראה פראי בעיני משתמשי Windows שמעולם לא "נכנסו לחיים האמיתיים."
יצירת משתמש מתחילה בהפעלת שורת הפקודה של השרת. בסביבת Windows, הדבר נעשה באופן הבא.
ראשית (1) עליך להריץ את שורת הפקודה כמנהל מערכת, ולאחר מכן עבור לתיקיה שבה נמצא MySQL (2), ואזהפעל את השרת עצמו (3):
mysql -u… -p
כאן "-u…" ו-"-p" הם מפתחות המצביעים על השם "…"=root (או שם אחר) והסיסמה שלו. באופן עקרוני, משתמש לא יכול להיות שורש, אלא כזה שיש לו זכויות "שורש" (ניהוליות).
חשוב: השרת למעשה תמיד פועל, כאן mysql -u… -p היא הפקודה לגשת לשרת, לא להפעיל אותו.
בסביבת לינוקס ובמערכות דומות, פקודה כזו היא פעולה "מקורית" ובדרך כלל נקבעת על ידי הפעלת mysqld במקום הנכון (בנתיב הנכון), יש לבדוק זאת באמצעות המנהל. בדרך כלל יש כאן שם אחר: לא mysql, אלא mysqld. גם כאן, פעולה זו לא תמיד זמינה לכל המשתמשים (של מערכת ההפעלה, לא של שרת MySQL). בניגוד ל-Windows, ב-Linuxoids, סדר ואבטחה הם דרישה טבעית ובלתי ניתנת למשא ומתן, שתמיד מטופלת בצורה מתורבתת.
בכל מקרה, ברגע ש-mysql יתחיל, הוא יודיע על כך בהודעה (4):
mysql>
ואפשר יהיה לעבוד גם עם משתמשים וגם עם מסדי נתונים.
הערה. בעת התקנה בסביבת Windows, הכל: Apache, MySQL, PHP, phpMyAdmin יכול להיות מוגדר לנתיבי ברירת מחדל, אבל מומלץ להשתמש במיקומים קומפקטיים וקרובים יותר עבור הכלים החשובים האלה:
- c:\SCiA\Apache;
- c:\SCiA\PHP;
- c:\SCiA\MySQL;
- …
- c:\SCiB\localhost\www\phpMyAdmin;
- c:\SCiB\site1\www;
- c:\SCiB\site2\www;
- …
- c:\SCiB\siteN\www\.
היגיון זה לא רק יפשט את הניהול, אלא גם ירחיב את היכולת של המפתח לעבור בין גרסאות מוצר ולנהל את הפונקציונליות שלהן.
עבודה על שורת הפקודה של MySQL
לאחר שהשרת הגיב וסיפק את שורת הפקודה שלו, ניתן ליצור משתמשים ולהקצות להם הרשאות.
בדוגמה זו, פקודת create user יצרה את המשתמש Petrov עם הסיסמה 123DFG. אם נעשתה שגיאה בעת הזנת פקודה, השרת מציע לתקן אותה, אך עדיף לעולם לא לעשות טעויות בעת עבודה על שורת הפקודה!
הפקודה הבאה מעניקה את כל ההרשאות מעניקה את כל הזכויות לכל דבר. ניתן להשמיט את פקודת ההדחה, אבל היא 'מפוצצת' את המאגר של הפקודות, כלומר, היא מתקנת את הביצוע שלהן.
MySQL: צור משתמש והענקת זכויות למסד הנתונים
פקודה בשימוש בדוגמה:
הענקת כל ההרשאות על. ל-'Petrov'@'localhost';
מעניק למעשה למשתמש פטרוב גישה לכל מסדי הנתונים (כוכבית ראשונה) לכל הטבלאות (כוכבית שנייה).
ככלל MySQL כללי, יצירת משתמש היא:
GRANT [סוג הרשאה] ON [שם מסד הנתונים].[שם הטבלה] אל '[משתמש]'@'localhost';
ההרשאות הבאות מותרות:
- ALL PRIVILEGES - כל הזכויות.
- CREATE - הזכות ליצור טבלאות/מסדי נתונים חדשים.
- DROP - הזכות לבטל טבלאות/מסדי נתונים.
- DELETE - הזכות למחוק מידע בטבלאות.
- INSERT - הזכות לכתוב מידע לטבלאות.
- SELECT - הזכות לקרוא מידע מטבלאות.
- UPDATE - הזכות לעדכן מידע בטבלאות.
- GRANT OPTION - הזכות לעבוד עם הרשאות של משתמשים אחרים.
מנקודת מבט מעשית, ב-MySQL "צור משתמש" מרמז על שלוש אפשרויות לזכויות:
- כל הזכויות לכל מסדי הנתונים ולכל המשתמשים;
- קרא וכתוב;
- רק לקריאה.
אפשרויות אחרות להענקת זכויות נדרשות רק לעתים רחוקות. בסביבת לינוקס, יש הרבה יותר סיבות לחופש "חוקי" (ונחיצות), אבל יש שם הרבה יותר הזדמנויות מאשר ב-Windows.
הפעולה ההפוכה של MySQL "צור משתמש" היא ירידה.
הורד את המשתמש 'Petrov'@'localhost';
לאחר ביצוע פקודה זו, פטרוב לא יהיה עוד משתמש וההרשאות שלו יאבדו. כדי לשנות הרשאות, השתמש בפקודה:
REVOKE [הרשאה] ב-[DB].[טבלה] אל '[משתמש]'@'localhost';
הפעולה הרגילה ב-MySQL היא ליצור משתמש או למחוק אותו, אבל שינוי הרשאות הוא גם פעולה חוקית (מתבקש לעתים רחוקות).
Using phpMyAdmin
יש הרבה יישומים של הכלי הנפלא הזה. בהתאם לגרסת ה-Apache, PHP ו-MySQL בשימוש, לרוב לוקח הרבה זמן למצוא את הגרסה הנכונה של מוצר זה, אך לאחר התקנת phpMyAdmin בהצלחה, למשתמש יש תכונות נוחות רבות ונוחותממשק.
באמצעות phpMyAdmin, אתה יכול לומר ל-MySQL ליצור משתמש עבור כל מארח ולנהל משתמשים קיימים בדרכים כמעט כירורגיות.
phpMyAdmin הוא לא הכלי היחיד עם ממשק נוח, אינטואיטיבי ועשיר בתכונות, אבל הוא הכלי הפופולרי ביותר לניהול שרתי MySQL.
על שורת הפקודה והאבטחה
כמובן, שימוש בשורת הפקודה MySQL הוא תרגיל לא אטרקטיבי, אך יש לזכור שבמקרים מסוימים רק שורת הפקודה של השרת יכולה להציל את מסד הנתונים או המשתמש, להבטיח ייבוא או ייצוא של מידע.
גרסאות התוכנה מתפתחות כל כך מהר שלמפתחים פשוט אין זמן לשלב את התכונות של, למשל, PHP ו-MySQL, MySQL ו-phpMyAdmin. אם משהו יקרה, שורת הפקודה תמיד תציל את היום.
לעולם אסור גם לשכוח: ניהול MySQL עוסק רק בגישה לבסיסי הנתונים שלו ובאמצעות הפונקציונליות שלו. קבצי מסד הנתונים פתוחים לגישה מחוץ ל-MySQL. אבטחה חיצונית של MySQL והמשאבים שהיא שולטת היא צורך אמיתי וחשוב.