כדי להתקין את MySQL באופן ידני במכונת Compute Engine שיצרתם, פועלים לפי השלבים הבאים.
במאמר בנושא MySQL ב-Compute Engine מופיעה סקירה כללית של כמה אפשרויות להגדרת MySQL ב-Compute Engine. במאמר הגדרת MySQL ב-Compute Engine מוסבר אילו מוצרים של Compute Engine מתאימים ל-MySQL.
לפני שמתחילים
- משתמשים במסוף Google Cloud כדי להפעיל את Compute Engine API.
- התקנת Google Cloud CLI
הגדרת סביבת העבודה כדי שהפקודות יהיו פחות מפורטות. מחליפים את הערכים של הפרויקט שלכם בערכים PROJECT_ID, REGION ו-ZONE בפקודות הבאות. רשימה מלאה של אזורים ותחומים זמינה כאן.
gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
יצירת מכונה של Compute Engine וחיבור SSH
יוצרים מכונה של Compute Engine ל-MySQL ומקימים חיבור SSH למכונה החדשה. מערכת ההפעלה שמוגדרת כברירת מחדל היא Debian גרסה 10. אם אתם מעדיפים להשתמש במערכת הפעלה אחרת במדריך הזה, תוכלו לבחור מבין האפשרויות שמתוארות בדף תמונות ציבוריות במסמכי התיעוד של Compute Engine.
המסוף
יצירת מכונה של Compute Engine
כדי ליצור את המכונה של Compute Engine ב- Google Cloud console, מבצעים את הפעולות הבאות:
נכנסים לדף Compute Engine VM instances במסוף Google Cloud .
בוחרים את הפרויקט החדש שיצרתם ולוחצים על המשך.
לוחצים על Create instance (New instance אם יש לכם מכונות קיימות). נותנים למכונה את השם mysql-test.
כדי לציין מערכת הפעלה שונה מזו שמוגדרת כברירת מחדל, בקטע Boot disk לוחצים על Change כדי להגדיר את המאפיינים של דיסק האתחול. בכרטיסייה תמונות ציבוריות, בוחרים מערכת הפעלה ולוחצים על שמירה.
כדי לפעול בהתאם לשיטות המומלצות בנושא אבטחה, כדאי ליצור את המכונה ללא כתובת IP חיצונית.
מרחיבים את אפשרויות מתקדמות ואז את רשת. בקטע Network interfaces, מרחיבים את ממשק default, ובתפריט External IPv4 address בוחרים באפשרות None.
לוחצים על יצירה.
הגדרה של תרגום כתובת רשת
כדי להגדיר ולנהל תרגום כתובות רשת באמצעות Cloud NAT, צריך לבצע את הפעולות הבאות:
נכנסים לדף Cloud NAT במסוף Google Cloud .
לוחצים על Get started (תחילת העבודה) או על Create Cloud NAT gateway (יצירת שער Cloud NAT).
בשדה שם השער, מזינים
nat-simple-configuration.כדי לבחור את Cloud Router, בקטע Select Cloud Router, מבצעים את הפעולות הבאות:
- בקטע רשת, בוחרים באפשרות ברירת מחדל.
- בשדה Region, בוחרים את האזור שצוין למכונה הווירטואלית.
בקטע Cloud Router, בוחרים באפשרות Create new router (יצירת נתב חדש).
בתיבת הדו-שיח Create a router שמופיעה, מזינים Name לנתב – לדוגמה,
nat-router-simple-configuration– ולוחצים על Create.
לוחצים על הגדרות מתקדמות.
בקטע Logging, בוחרים באפשרות Translation and errors. ההגדרה הזו קובעת שכל היומנים יישלחו מ-Cloud NAT אל Cloud Logging.
לוחצים על יצירה.
יצירת חיבור SSH למכונה הווירטואלית
כדי ליצור חיבור SSH:
בדף VM instances, מוצאים את המכונה הווירטואלית החדשה ברשימה.
בעמודה Connect (התחברות) של המכונה הווירטואלית, לוחצים על SSH. טרמינל ה-SSH נפתח בחלון דפדפן.
gcloud
כדי ליצור מכונה של Compute Engine, משתמשים בפקודה
gcloud compute instances create. כדי לציין את מערכת ההפעלה, מוסיפים את הפרמטר--image-familyואחריו את משפחת התמונות, או את הפרמטר--imageואחריו את שם התמונה של גרסת תמונה ספציפית. לדוגמה, כדי להשתמש בתמונה העדכנית ביותר ממשפחת Debian 10, מוסיפים--image-family debian-10. כשמשתמשים בתמונות ציבוריות, צריך לספק את פרויקט התמונות באמצעות הפרמטר--image-project.gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --no-address \ mysql-testיוצרים Cloud Router.
gcloud compute routers create nat-router-simple-configuration \ --network=defaultהגדרה וניהול של תרגום כתובות רשת באמצעות Cloud NAT.
gcloud compute routers nats create nat-simple-configuration \ --router=nat-router-simple-configuration \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-loggingמתחברים למופע באמצעות
ssh.gcloud compute ssh \ --tunnel-through-iap \ mysql-testחיבור ה-SSH מתבצע באמצעות העברת TCP שמטופלת על ידי שרת proxy לאימות זהויות (IAP).
התקנת MySQL
בשלבים הבאים מוסבר איך להתקין את MySQL במכונה של Compute Engine.
Debian 10 ואילך
ההוראות האלה מתייחסות להתקנה של MySQL 8 או 5.7.
גרסאות 10 ואילך של Debian מכילות את MariaDB במקום MySQL כחלק ממערכת ניהול החבילות שלה. MariaDB שומרת על תאימות לפרוטוקול MySQL, אבל יש לה קבוצת תכונות שמתפתחת באופן עצמאי. פרטים נוספים זמינים במאמר MariaDB לעומת MySQL.
כדי להתקין את MySQL, מורידים את חבילת הגרסה ומתקינים אותה באופן ידני באמצעות הפקודה dpkg.
מתקינים את יחסי התלות של
wget.sudo apt-get install -y wget
מורידים את חבילת ההפצה של MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}מוודאים שקובץ חבילת הגרסה תקין.
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5האותנטיות והשלמות של הקובץ מאומתות אם מוצגת הפלט הבא:
mysql-apt-config_0.8.20-1_all.deb: OKאחרי שמאמתים את הקובץ, מוסיפים את חבילת MySQL למאגר החבילות המקומי.
sudo dpkg -i ${DEB_FILE}תתבקשו לאשר את אפשרויות ההתקנה, כולל גרסת MySQL.
כשמסומנת האפשרות העליונה בתפריט MySQL Server & Cluster, מקישים על מקש Return ואז משתמשים במקשי החיצים כדי לבחור גרסת שרת.
במדריך הזה אנחנו יוצאים מנקודת הנחה שבחרתם ב-MySQL 8.0 או ב-5.7. אחרי שבוחרים את הגרסה, מקישים על Return במקלדת.
כשמסיימים לבחור את האפשרויות בתפריט ההגדרות, משתמשים במקשי החיצים כדי לבחור באפשרות
Okבתפריט ומקישים על מקש Return במקלדת.מעדכנים את מטמון החבילות.
sudo apt-get updateאם מופיעה שגיאת GPG דומה ל-The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29, מייבאים את מפתחות ה-GPG החסרים באמצעות פקודה שדומה לדוגמה הבאה:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29בהודעת השגיאה לדוגמה, המפתח הציבורי שחסר הוא
467B942D3A79BD29. צריך לספק את הערך הזה באמצעות האפשרות--recv-keys.מריצים שוב את הפקודה כדי לעדכן את מטמון החבילות.
מתקינים את MySQL. תהליך ההתקנה מתחיל את שירות MySQL בשבילכם.
sudo apt-get -y install mysql-community-server
תתבקשו לספק פרטים מסוימים להתקנה, כמו סיסמת הבסיס.
Debian 9
ההוראות האלה מתייחסות להתקנה של MySQL 8 או 5.7.
כברירת מחדל, בגרסאות מסוימות של Debian, כמו Debian 9, MariaDB מותקן כשרת MySQL. MariaDB תוכננה להיות תואמת במידה רבה ל-MySQL, ואפשר להפעיל אותה באמצעות אותן פקודות. לפרטים על ההבדלים בין MariaDB לבין MySQL סטנדרטי, אפשר לעיין במאמר מעבר מ-MySQL ל-MariaDB ב-Debian 9.
כדי להתקין את MySQL, פועלים לפי ההוראות הבאות:
מורידים את חבילת ההפצה של MySQL Community Server.
export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}מוודאים שקובץ חבילת הגרסה תקין.
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5אם הפלט הבא מוצג, סימן שהאותנטיות והתקינות של הקובץ אומתו.
mysql-apt-config_0.8.17-1_all.deb: OK
אחרי שמאמתים את הקובץ, מוסיפים את חבילת MySQL למאגר החבילות המקומי.
sudo dpkg -i ${DEB_FILE}תתבקשו לאשר את אפשרויות ההתקנה, כולל גרסת MySQL.
כשמסומנת האפשרות העליונה בתפריט MySQL Server & Cluster, מקישים על מקש Return ואז משתמשים במקשי החיצים כדי לבחור גרסת שרת.
במדריך הזה אנחנו יוצאים מנקודת הנחה שבחרתם ב-MySQL 8.0 או ב-5.7. אחרי שבוחרים את הגרסה, מקישים על Return במקלדת.
כשמסיימים לבחור את האפשרויות בתפריט ההגדרות, משתמשים במקשי החיצים כדי לבחור באפשרות
Okבתפריט ומקישים על מקש Return במקלדת.מעדכנים את מטמון החבילות.
sudo apt-get update
אם מופיעה שגיאת GPG דומה ל-The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29, מייבאים את מפתחות ה-GPG החסרים באמצעות פקודה שדומה לדוגמה הבאה:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29בהודעת השגיאה לדוגמה, המפתח הציבורי שחסר הוא
467B942D3A79BD29. צריך לספק את הערך הזה באמצעות האפשרות--recv-keys.מריצים שוב את הפקודה כדי לעדכן את מטמון החבילות.
מתקינים את MySQL. תהליך ההתקנה מתחיל את שירות MySQL בשבילכם.
sudo apt-get -y install mysql-community-server
Ubuntu
ב-Ubuntu 1804 ובגרסאות קודמות, ההוראות האלה מתקינות את MySQL 5.7.
ב-Ubuntu 2004 ואילך, ההוראות האלה מתקינות את MySQL 8.
מעדכנים את מנהל החבילות
apt-get.sudo apt-get update
מתקינים את MySQL. תהליך ההתקנה מתחיל את שירות MySQL בשבילכם.
sudo apt-get -y install mysql-server
כברירת מחדל בהפצות של Ubuntu, mysql מאמת את המשתמש
rootבאמצעות הפלאגיןauth_socket. מריצים את השאילתה הזו כדי לבדוק את הגדרת ברירת המחדל:echo "SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user='root' ;" \ | sudo mysql -t -u rootבפלט מוצג שהמשתמש
rootשמתחבר מ-localhostישתמש בתוסףauth_socket:+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
משנים את ההגדרה הזו ומשנים את סיסמת הבסיס לסיסמה שקשה לנחש:
export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD" echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \ | sudo mysql -u rootהפלט מכיל את סיסמת הבסיס החדשה:
Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
CentOS או RHEL 7
ההוראות האלה מתייחסות להתקנה של MySQL 8.
גרסה 7 של CentOS ו-RHEL כוללת את MariaDB במקום MySQL כחלק ממערכת ניהול החבילות שלה. כדי להתקין את MySQL, צריך קודם לעדכן את מנהל החבילות.
מורידים את חבילת ההפצה של MySQL Community Server.
export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}מוודאים שקובץ חבילת הגרסה תקין.
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5אם הפלט הבא מוצג, סימן שהאותנטיות והתקינות של הקובץ אומתו.
mysql80-community-release-el7-4.noarch.rpm: OK
מעדכנים את מנהל החבילות כך שיכלול את MySQL.
sudo rpm -Uvh ${RPM_FILE}מתקינים את MySQL.
sudo yum -y install mysql-community-server
מפעילים את שרת MySQL.
sudo /usr/bin/systemctl start mysqld
קבלת סיסמת הבסיס הזמנית מיומני השרת
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Rocky Linux או RHEL 8
ההוראות האלה מתייחסות להתקנה של MySQL 8.
גרסה 8 של Rocky Linux, CentOS Stream ו-RHEL מכילה את MariaDB במקום MySQL כחלק ממערכת ניהול החבילות שלה. כדי להתקין את MySQL, קודם צריך לעדכן את מנהל החבילות.
מורידים את חבילת ההפצה של MySQL Community Server.
export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}מוודאים שקובץ חבילת הגרסה תקין.
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5אם הפלט הבא מוצג, סימן שהאותנטיות והתקינות של הקובץ אומתו.
mysql80-community-release-el8-2.noarch.rpm: OK
מעדכנים את מנהל החבילות כך שיכלול את MySQL.
sudo rpm -iUvh ${RPM_FILE}מתקינים את MySQL. במהלך ההתקנה, משביתים את מאגר AppStream כדי שההתקנה תשתמש בשרת הקהילה.
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-serverמפעילים את שרת MySQL.
sudo /usr/bin/systemctl start mysqld
קבלת סיסמת הבסיס הזמנית מיומני השרת
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
שיפור האבטחה של התקנת MySQL
כדי לשפר את האבטחה של התקנת MySQL, מריצים את הפקודה mysql_secure_installation. אם לא הגדרתם סיסמה במהלך תהליך ההתקנה, צריך ליצור סיסמה בשלב הזה. מידע נוסף על הפקודה הזו זמין במסמכי התיעוד של MySQL בנושא mysql_secure_installation.
sudo mysql_secure_installation
חיבור ל-MySQL
בשלבים הבאים מוסבר איך להתחבר ל-MySQL ממופע mysql-test.
MySQL 8.0
מתחברים ל-MySQL באמצעות לקוח MySQL.
sudo mysql -u root -p
כשמתחברים ל-MySQL, שורת הפקודה משתנה ל-
mysql>.אחרי זה אפשר להריץ פקודות של MySQL. לדוגמה, הפקודה הבאה מציגה את השרשורים שפועלים, כולל החיבור הנוכחי.
mysql> SHOW processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 1889 | Waiting on empty queue | NULL | | 14 | root | localhost | NULL | Query | 0 | init | show processlist | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
כדי ליצור רשימת משתמשים, אפשר להשתמש בפקודה הבאה.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+------------------------------------------------------------------------+ | User | Host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B | +------------------+-----------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)כשמסיימים להריץ פקודות, משתמשים בפקודה
exitכדי לצאת מלקוח MySQL, ואז משתמשים שוב בפקודהexitכדי לצאת מהמכונה של Compute Engine.mysql> exit
Bye
MySQL 5.7
מתחברים ל-MySQL באמצעות לקוח MySQL.
sudo mysql -u root -p
כשמתחברים ל-MySQL, שורת הפקודה משתנה ל-
mysql>.אחרי זה אפשר להריץ פקודות של MySQL. לדוגמה, הפקודה הבאה מציגה את השרשורים שפועלים, כולל החיבור הנוכחי.
mysql> SHOW processlist;
+----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
כדי ליצור רשימת משתמשים, אפשר להשתמש בפקודה הבאה.
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+---------------+-----------+-------------------------------------------+ | User | Host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)
כשמסיימים להריץ פקודות, משתמשים בפקודה
exitכדי לצאת מלקוח MySQL, ואז משתמשים שוב בפקודהexitכדי לצאת מהמכונה של Compute Engine.mysql> exit
Bye
המאמרים הבאים
- מידע נוסף על MySQL זמין במסמכי התיעוד הרשמיים של MySQL.
- ב-Cloud Marketplace יש מגוון רחב של חבילות פיתוח שמבוססות על MySQL.
- אם הדרישות שלכם כוללות זמינות גבוהה ויכולת הרחבה, כדאי לשקול את האפשרויות הבאות:
- התקנה של MySQL Cluster ב-Compute Engine לזמינות גבוהה ולמדרגיות באמצעות שיתוף אשכולות ללא שיתוף וחלוקה אוטומטית.
- לוחצים כדי לפרוס את Percona, פתרון קוד פתוח לאשכולות MySQL, מ-Cloud Marketplace.
- התקנה של Vitess, פתרון קוד פתוח שמשמש לכל התנועה במסד הנתונים של YouTube מאז 2011. Vitess מתאים לאפליקציות שפועלות בקונטיינרים. מידע על שימוש ב-Vitess בסביבה בקונטיינרים זמין במאמר הפעלת Vitess ב-Kubernetes.