logo


פרק 7: המודל MySQL

בסיס הנתונים שלכם ב MySQL: צעד שלישי

זהו החלק הקל. אנו נמצאים עדין בתוך הלקוח האינטראקטיבי mysql, אז נייבא את הנתונים הגולמיים מכאן. לחלופין נוכל להשתמש בכלי mysqlimport כלקוח בפני עצמו, שלו תחביר משלו. פשוט כך:

mysql> LOAD DATA INFILE "/my/rawdata/billing.txt" 
       INTO TABLE billing
    -> \g
Query OK, 6 rows affected (0.17 sec)
Records: 6  Deleted: 0  Skipped: 0  Warnings: 1
mysql> LOAD DATA INFILE "/my/rawdata/invoices.txt" 
       INTO TABLE invoices
    -> \g
Query OK, 6 rows affected (0.32 sec)
Records: 6  Deleted: 0  Skipped: 0  Warnings: 0

לעתים השרת יחזיר התראה אחת או יותר כאשר נייבא נתונים גולמיים. סיבות אפשריות יכולות להיות עודף מידע בנתונים הגולמיים בהשוואה למבנה הטבלה, או שהשרת מצא שחלק מהנתונים אינם מתאימים בדיוק לסוגי השדות שהוגדרו. התראות אינם בעיות גורליות, ובמקרה שלנו, למרות שהשרת היה קצת ספקני, הנתונים הועברו מצוין.

רק כדי להיות בטוחים, תוכלו להריץ בדיקה קטנה: שלחו שאילתה פשוטה מתוך הלקוח mysql:

mysql> select hours from invoices where invoice=99070101
    -> \g
+-------+
| hours |
+-------+
|  3.70 |
+-------+
1 row in set (0.05 sec)

ואכן כן...זה פועל!

הגנה על הממלכה

עכשיו, נמנע מאחרים מלהניח את ידיהם הקטנות והמלוכלכות על הנתונים היקרים שלנו. היזכרו במודל האבטחה של MySQL שיצרנו והוספנו לו סיסמת שורש (root). עתה, כאשר יש ברשותנו בסיס נתונים, נצטרך ליצור חשבון MySQL לביצוע שאילתות עליו. למעשה, ניצור שני חשבונות בעלי גישה ל Clients. אחד יהיה חשבון פשוט לקריאה בלבד, שבו ישתמשו סקריפטי השאילתה שלנו, והחשבון השני יהיה בעל עוצמה גדולה יותר ובו נוכל להשתמש כדי לנהל את בסיס הנתונים.

אתם מוזמנים, כמובן, לקרוא בספר ההדרכה ל MySQL על setting up user accounts and privileges (יצירת חשבונות והרשאות למשתמש ). אבל ראו הוזהרתם - זה יכול לגרום לנזק נפשי רציני. כאן, נביא רק את מה שאתם צריכים לדעת כדי ליצור חשבונות משתמש בסיסיים.

ראשית, נבנה חשבון קריאה בלבד בשם serf שיוכל לגשת לבסיס הנתונים Clients ולבצע פקודות Select של SQL על כל אחת מן הטבלאות. חשבון זה איננו רשאי לגשת לשום בסיס נתונים אחר הנתמך ע"י שרת ה MySQL, כמו אינו רשאי לשנות או למחוק את הטבלאות ב Clients (ואף לא להוסיף טבלאות חדשות). לשם כך הפעילו את הלקוח mysql בתור המשתמש הראשי (root user).

/path/to/mysql/bin/mysql -u root -p
password: ***
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 3.22.20

Type 'help' for help.

עתה, השתמשו בפקודה GRANT בכדי ליצור את רשימת ההרשאות למשתמש serf, שסיסמתו תהיה "readonly" , ויוכל לבצע רק פקודות SELECT על הטבלאות בתוך Clients, ולהתחבר מכל מארח (remote host):

mysql> GRANT SELECT ON Clients.* TO serf@'%' 
       IDENTIFIED BY 'readonly'

התווים שנמצאים אחרי הסימן @ מגדירים באילו מארחים serf יוכל להיווצר. הסימן % הוא תו כללי שמשמעותו "כל מארח". נוכל ליצור מעגלים מוגבלים יותר, כמו כל המארחים שנמצאים בתחום "safe.net"' בתחביר:

mysql> GRANT SELECT ON Clients.* TO serf@'%.safe.net' 
       IDENTIFIED BY 'readonly'

הזהרה: המשתמש serf יוכל להתחבר לשרת MySQL ממחשב מרוחק, אבל לא מתוך המחשב שמריץ את השרת עצמו, הידוע כמחשב מארח מקומי (localhost) , אנו צריכים להעניק את זה במפורש בפקודת GRANT אחרת:

mysql> GRANT SELECT ON Clients.* TO serf@localhost 
       IDENTIFIED BY 'readonly'

חשבון חזק יותר, כמו החשבון lord, יוכל לשמש כדי לבצע שינויים בבסיס הנתונים Clients:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
ON Clients.* TO lord@localhost IDENTIFIED BY 'fiefdom'

אם המשתמש/ת lord יתחבר מהמארח המקומי, תהיה לו/ה שליטה מלאה על בסיס הנתונים זה, אבל לא על בסיסי נתונים אחרים על השרת (אלא אם כן נפעיל פקודת GRANT נוספת).

כמובן, שתוכל ליצור משתמש חזק אפילו יותר שיוכל לשנות את כל בסיסי הנתונים הנמצאים על שרת זה:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
ON *.* TO king@'%' IDENTIFIED BY 'kingdom'

ישנם כל כך הרבה אפשרויות בהם תוכלו להשתעשע כך שבקלות תוכלו לבלות את כל היום ביצירת חשבונות משתמש. אולם אנו צריכים להמשיך קדימה, פשוט כדאי שתהיו מודעים לנושאי האבטחה המתאימים לנתונים שלכם, ותבנו את חשבונות גישה בהתאם.

צעד שני :MySQL בסיס הנתונים שלכם ב
תוכן עניינים
Perl היכן נמצאת

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
המודל MySQL  
בואו נכין את MySQL  
הרשאות של MySQL  
בסיס התונים הראשון שלכם ב MySQL  
בסיס הנתונים הראשון שלכם ב MySQL: צעד שני  
בסיס הנתונים הראשון שלכם ב MySQL: צעד שלישי  
היכן נמצאת Perl?  
עבודה עם בסיסי נתונים: MySQL-סיכום  
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl