אנדרואיד

כיצד לאפשר חיבורים מרוחקים לשרת מסד הנתונים MySQL

23. MySQL 8 IF и CASE

23. MySQL 8 IF и CASE

תוכן עניינים:

Anonim

כברירת מחדל, שרת MySQL מאזין לחיבורים רק מ- localhost, כלומר ניתן לגשת אליו רק על ידי יישומים הפועלים באותו מארח.

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

במדריך זה נעבור על הצעדים הדרושים כדי לאפשר חיבורים מרוחקים לשרת MySQL. אותן הוראות חלות על MariaDB.

קביעת תצורה של שרת MySQL

השלב הראשון הוא להגדיר את שרת MySQL להאזין בכתובת IP ספציפית או בכל כתובות ה- IP במחשב.

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

לשם כך עליכם לערוך את קובץ התצורה של MySQL ולהוסיף או לשנות את הערך של אפשרות ה- bind-address . אתה יכול להגדיר כתובת IP אחת וטווחי IP. אם הכתובת היא 0.0.0.0 , שרת MySQL מקבל חיבורים בכל ממשקי ה- IPv4 המארחים. אם הגדרת IPv6 במערכת שלך, אז במקום 0.0.0.0 , השתמש :: .

המיקום של קובץ התצורה של MySQL שונה בהתאם להפצה. באובונטו /etc/mysql/mysql.conf.d/mysqld.cnf הקובץ ממוקם ב- /etc/mysql/mysql.conf.d/mysqld.cnf , ואילו בהפצות מבוססות Red Hat כמו CentOS, הקובץ ממוקם ב- /etc/my.cnf .

פתח את הקובץ עם עורך הטקסט שלך:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

חפש קו שמתחיל bind-address והגדר את ערכו לכתובת ה- IP עליה צריך להקשיב לשרת MySQL.

כברירת מחדל, הערך מוגדר ל- 127.0.0.1 (מאזין רק ב- localhost).

בדוגמה זו נקבע לשרת MySQL להאזין בכל ממשקי ה- IPv4 על ידי שינוי הערך ל- 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

אם יש שורה שמכילה skip-networking , מחק אותה או הגיב אותה על ידי הוספת # בתחילת השורה.

ב- MySQL 8.0 ומעלה, ייתכן כי הוראות ההתחייבות אינן קיימות. במקרה זה, הוסף אותו תחת הסמל קטע.

לאחר ביצוע הפעולה, הפעל מחדש את שירות MySQL כדי שהשינויים ייכנסו לתוקף. רק root או משתמשים עם הרשאות sudo יכולים להפעיל מחדש את השירותים.

כדי להפעיל מחדש את שירות MySQL ב- Debian או Ubuntu, הקלד:

sudo systemctl restart mysql

בהפצות מבוססות RedHat כמו CentOS כדי להפעיל מחדש את הפעלת השירות:

sudo systemctl restart mysqld

מתן גישה למשתמש ממכשיר מרוחק

השלב הבא הוא לאפשר גישה למסד הנתונים למשתמש המרוחק.

היכנס לשרת MySQL כמשתמש השורש על ידי הקלדה:

sudo mysql

mysql -uroot -p

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

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

איפה:

  • database_name הוא שם בסיס הנתונים אליו יתחבר המשתמש. user_name הוא שם המשתמש המשתמש ב- MySQL. ip_address היא כתובת ה- IP ממנה יתחבר המשתמש. השתמש ב- % כדי לאפשר למשתמש להתחבר מכל כתובת IP. user_password היא סיסמת המשתמש.

לדוגמה, כדי להעניק גישה למסד נתונים dbname למשתמש בשם foo עם הסיסמה my_passwd ממכונת לקוח עם IP 10.8.0.5 , היית מפעיל:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

קביעת תצורת חומת האש

השלב האחרון הוא להגדיר את תצורת חומת האש שלך כך שתאפשר תנועה ביציאה 3306 (יציאת ברירת המחדל של MySQL) מהמחשבים המרוחקים.

איפטבלים

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

אפשר גישה מכתובת IP ספציפית:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW הוא כלי חומת האש המוגדר כברירת מחדל באובונטו. כדי לאפשר גישה מכל כתובת IP באינטרנט (מאוד לא בטוחה):

sudo ufw allow 3306/tcp

אפשר גישה מכתובת IP ספציפית:

sudo ufw allow from 10.8.0.5 to any port 3306

חומת אש

FirewallD הוא כלי ניהול חומת האש המוגדר כברירת מחדל ב- CentOS. כדי לאפשר גישה מכל כתובת IP באינטרנט (מאוד לא בטוחה) סוג:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

כדי לאפשר גישה מכתובת IP ספציפית ביציאה ספציפית, אתה יכול ליצור אזור FirewallD חדש או להשתמש בכלל עשיר. ובכן ליצור אזור חדש בשם mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

אימות השינויים

כדי לוודא שהמשתמש המרוחק יכול להתחבר לשרת MySQL, הפעל את הפקודה הבאה:

mysql -u user_name -h mysql_server_ip -p

כאשר שם המשתמש הוא שם המשתמש mysql_server_ip הענקת גישה ו- mysql_server_ip הוא כתובת ה- IP של המארח בו פועל שרת MySQL.

אם הכל מוגדר כהלכה, תוכלו להתחבר לשרת MySQL המרוחק.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

השגיאה שלהלן מציינת כי למשתמש שאתה מנסה להתחבר אין הרשאות גישה לשרת MySQL המרוחק.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

סיכום

MySQL, שרת מסד הנתונים של קוד פתוח הפופולרי ביותר כברירת מחדל, מאזין לחיבורים נכנסים רק על localhost.

כדי לאפשר חיבורים מרוחקים לשרת MySQL, עליך לבצע את הצעדים הבאים:

  1. קבע את התצורה של שרת MySQL להאזנה לכל הממשק או ממשק מסוים. הגישה למשתמש המרוחק. פתח את יציאת MySQL בחומת האש שלך.
mysql mariadb