à¹à¸§à¸à¹à¸²à¸à¸±à¸ à¸à¸à¸±à¸à¸à¸´à¹à¸¨à¸©
สารบัญ:
- การกำหนดค่าเซิร์ฟเวอร์ MySQL
- การให้สิทธิ์การเข้าถึงแก่ผู้ใช้จากเครื่องระยะไกล
- การกำหนดค่าไฟร์วอลล์
- iptables
- UFW
- FirewallD
- ตรวจสอบการเปลี่ยนแปลง
- ข้อสรุป
โดยค่าเริ่มต้นเซิร์ฟเวอร์ MySQL จะรับฟังการเชื่อมต่อจาก localhost เท่านั้นซึ่งหมายความว่าสามารถเข้าถึงได้โดยแอปพลิเคชันที่ทำงานบนโฮสต์เดียวกันเท่านั้น
อย่างไรก็ตามในบางสถานการณ์จำเป็นต้องเข้าถึงเซิร์ฟเวอร์ MySQL จากระยะไกล ตัวอย่างเช่นเมื่อคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระยะไกลจากระบบโลคัลของคุณหรือเมื่อใช้การปรับใช้เซิร์ฟเวอร์หลายตัวที่แอปพลิเคชันทำงานบนเครื่องอื่นจากเซิร์ฟเวอร์ฐานข้อมูล ทางเลือกหนึ่งคือเข้าถึงเซิร์ฟเวอร์ MySQL ผ่าน SSH Tunnel และอีกทางหนึ่งคือกำหนดค่าเซิร์ฟเวอร์ 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 จะแตกต่างกันไปตามการกระจาย ใน Ubuntu และ Debian ไฟล์นั้นอยู่ที่
/etc/mysql/mysql.conf.d/mysqld.cnf
ในขณะที่ Red Hat based distributions เช่น 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
bind-address = 0.0.0.0 # skip-networking
หากมีบรรทัดที่มีการ
skip-networking
ให้ลบหรือใส่ความคิดเห็นโดยเพิ่ม
#
ที่จุดเริ่มต้นของบรรทัด
ใน MySQL 8.0 ขึ้นไปคำสั่ง
bind-address
อาจไม่ปรากฏขึ้น ในกรณีนี้เพิ่มภายใต้
มาตรา.
เมื่อเสร็จแล้วให้เริ่มบริการ MySQL เพื่อให้การเปลี่ยนแปลงมีผล เฉพาะผู้ใช้ root หรือผู้ใช้ที่มีสิทธิ์ sudo เท่านั้นที่สามารถเริ่มบริการใหม่ได้
ในการรีสตาร์ทบริการ MySQL บน Debian หรือ Ubuntu ให้พิมพ์:
sudo systemctl restart mysql
ใน RedHat ตามการกระจายเช่น CentOS เพื่อเริ่มการทำงานของบริการ:
การให้สิทธิ์การเข้าถึงแก่ผู้ใช้จากเครื่องระยะไกล
ขั้นตอนต่อไปคือการอนุญาตให้เข้าถึงฐานข้อมูลไปยังผู้ใช้ระยะไกล
ล็อกอินเข้าสู่เซิร์ฟเวอร์ MySQL ในฐานะผู้ใช้รูทโดยพิมพ์:
sudo mysql
mysql -uroot -p
จากภายใน MySQL shell ใช้คำสั่ง
GRANT
เพื่อให้สิทธิ์การเข้าถึงสำหรับผู้ใช้ระยะไกล
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
ที่ไหน:
-
database_name
เป็นชื่อของฐานข้อมูลที่ผู้ใช้จะเชื่อมต่อuser_name
เป็นชื่อของผู้ใช้ MySQLip_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) จากเครื่องระยะไกล
iptables
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 เป็นเครื่องมือไฟร์วอลล์เริ่มต้นใน Ubuntu หากต้องการอนุญาตการเข้าถึงจากที่อยู่ IP ใด ๆ บนอินเทอร์เน็ต (ไม่ปลอดภัย) ให้เรียกใช้:
sudo ufw allow 3306/tcp
อนุญาตการเข้าถึงจากที่อยู่ IP ที่เฉพาะเจาะจง:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
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
โดยที่
user_name
เป็นชื่อของผู้ใช้ที่คุณให้สิทธิ์การเข้าถึงและ
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 คุณต้องทำตามขั้นตอนต่อไปนี้:
- กำหนดค่าเซิร์ฟเวอร์ MySQL ให้ฟังบนอินเทอร์เฟซทั้งหมดหรือเฉพาะการเข้าถึงระดับผู้ใช้ระยะไกลเปิดพอร์ต MySQL ในไฟร์วอลล์ของคุณ
โครงการ Drizzle Project มีโครงการ Stratus Down Downs สำหรับโครงการโอเพนซอร์สใหม่กำลังพัฒนาฐานข้อมูลไมโครเคอร์เนลใหม่โดยอิงกับ MySQL ซึ่งมีเป้าหมายใหญ่ -Scale โปรแกรมประยุกต์บนเว็บ

ฐานข้อมูล MySQL แบบโอเพนซอร์สเริ่มมีชีวิตชีวาเป็นทางเลือกที่มีน้ำหนักเบาสำหรับระบบจัดการฐานข้อมูลขนาดใหญ่ที่ขาดแคลนทรัพยากรเช่น Oracle หรือ Sybase ในช่วงหลายปีที่ผ่านมาผู้ใช้มีคุณสมบัติเพิ่มขึ้นเรื่อย ๆ ทำให้โค้ดเนมของ MySQL พองตัวด้วยความสามารถที่เคยพบมาก่อนในเชิงพาณิชย์เท่านั้น
Sun's Mickos: ฉันสบายดีกับ MySQL ของ MySQL 5.1 Rant

ผู้บริหารอาวุโสของ Sun ในวันจันทร์ลดลงความขัดแย้งกับสาธารณะล่าสุด วิพากษ์วิจารณ์โดยผู้ร่วมก่อตั้ง MySQL Michael Johnson "Monty" Widenius ซึ่งเป็นนักพัฒนาซอฟต์แวร์ฐานข้อมูลแบบโอเพนซอร์สของ MySQL ได้ปล่อย MySQL 5.1 เวอร์ชั่นล่าสุดของ Sun Microsystems ด้วยโพสต์โพสต์โพสต์ trashing ของเขาเมื่อวันที่ 29 พฤศจิกายนที่ผ่านมา Widenius เตือนให้ผู้ใช้ "ระมัดระวังเกี่ยวกับ MySQL 5.1" เพราะ "มีข้อผิดพลาดร้ายแรงที่รู้จักและไม่รู้จักหลายอย่างในคุณสมบัติใหม่ ๆ ที่ยังไม่ได้กล่าวถึง ความเห็นของ Widenius เพิ่มขึ้นอ
MySQL เปิดตัว MySQL Update เป็น Oracle Deal Looms

MySQL 5.4 เพิ่มการปรับปรุงขีดความสามารถให้กับฐานข้อมูล open-source