MySQL เป็นระบบจัดการฐานข้อมูล open-source เป็นส่วนหนึ่งของ stack ซึ่ง LAMP (Linux, Apache, MySQL, PHP/Python/Perl) เป็นที่นิยมอย่างมาก ใช้โมเดลเชิงสัมพันธ์และใช้ Structured Query Language (รู้จักกันดีในชื่อ SQL) เพื่อจัดการข้อมูล
คู่มือนี้ จะเป็นการติดตั้ง MySQL เวอร์ชั่น 8.0 บน Ubuntu 20.04 หากดำเนินการติดตั้งเรียบร้อยแล้ว จะสามารถใช้ฐานข้อมูลในการทำเว็บไซต์หรือสร้างแอปพลิเคชั่นได้ ก่อนที่จะดำเนินการติดตั้ง แนะนำให้ ตั้งค่า server เบื้องต้นด้วย Ubuntu 20.04 ให้เรียบร้อยก่อน
ขั้นตอนที่ 1 – ดำเนินการติดตั้ง MySQL
สำหรับบน Ubuntu 20.04 สามารถติดตั้ง MySQL โดยการใช้พื้นที่เก็บข้อมูล APT package โดยเวอร์ชั่นมาตรฐานคือ 8.0.34 หากต้องการติดตั้ง ให้อัปเดต package บนเซิร์ฟเวอร์ของคุณ หากคุณยังไม่ได้ดำเนินการเมื่อเร็ว ๆ นี้ สามารถใช้คำสั่งดังต่อไปนี้
sudo apt update
จากนั้นติดตั้ง MySQL-server package ด้วยคำสั่ง
sudo apt install mysql-server
ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์กำลังทำงานโดยใช้คำสั่ง systemctl start
sudo systemctl start mysql.service
ขั้นตอนที่ 2 – กำหนดค่า MySQL
สำหรับการติดตั้ง MySQL ใหม่ คุณจะต้องเรียกใช้สคริปต์ความปลอดภัยที่รวมอยู่ใน DBMS สคริปต์นี้เปลี่ยนตัวเลือกเริ่มต้นที่มีความปลอดภัยน้อยกว่าสำหรับสิ่งต่างๆ เช่น การเข้าสู่ระบบด้วย root
คำเตือน ตั้งแต่เดือนกรกฎาคม 2022 จะเกิดข้อผิดพลาดขึ้นเมื่อคุณเรียกใช้สคริปต์ mysql_secure_installation โดยไม่มีการกำหนดค่าเพิ่มเติม ทางเราขอแนะนำให้คุณรันสคริปต์ดังต่อไปนี้ก่อนที่จะเริ่มใช้ MySQL เพื่อจัดการข้อมูลของคุณและเพื่อหลีกเลี่ยงการเข้าสู่ลูปแบบเรียกซ้ำ โดยต้องปรับวิธีการตรวจสอบสิทธิ์ผู้ใช้ root MySQL ก่อน
อันดับแรก เปิด MySQL
sudo mysql
จากนั้นรันคำสั่ง ALTER USER ต่อไปนี้เพื่อเปลี่ยนวิธีการตรวจสอบสิทธิ์ของผู้ใช้ root เป็นวิธีที่ใช้รหัสผ่าน ตัวอย่างต่อไปนี้เปลี่ยนวิธีการรับรองความถูกต้องเป็น mysql_native_password (สามารถกำหนดรหัสผ่านที่ต้องการได้เลย)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
หลังจากดำเนินการเรียบร้อยแล้ว ให้ออกจาก MySQL
exit
จากนั้นสามารถรันคำสั่ง mysql_secure_installation ได้เลย
mysql_secure_installation
สิ่งนี้จะนำคุณไปสู่ตัวเลือกความปลอดภัยของการติดตั้ง MySQL ได้ ข้อความแรกจะถามว่าคุณต้องการตั้งค่า Validate Password Plugin หรือไม่ ซึ่งสามารถใช้เพื่อทดสอบความปลอดภัยของรหัสผ่านของผู้ใช้ MySQL ใหม่ หากคุณเลือกที่จะตั้งค่า Validate Password Plugin ผู้ใช้ MySQL ใดๆ ที่คุณสร้างต้องมีรหัสผ่านที่ตรงกัน ซึ่งระดับนโยบายที่เข้มงวดที่สุด จะกำหนดให้รหัสผ่านมีความยาวอย่างน้อยแปดตัวอักษรและประกอบด้วยตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และอักขระพิเศษผสมกัน

ไม่ว่าคุณจะเลือกตั้งค่า Validate Password Plugin หรือไม่ก็ตาม ข้อความแจ้งถัดไปคือการตั้งรหัสผ่านสำหรับผู้ใช้ root ของ MySQL ป้อนแล้วยืนยันรหัสผ่านที่ปลอดภัยที่คุณเลือก หากใช้ Validate Password Plugin คุณจะได้รับแจ้งของรหัสผ่านใหม่ของคุณ จากนั้นสคริปต์จะถามว่าคุณต้องการดำเนินการต่อด้วยรหัสผ่านที่คุณเพิ่งป้อนหรือต้องการป้อนรหัสผ่านใหม่ สมมติว่าคุณพอใจกับรหัสผ่านที่คุณเพิ่งป้อน ให้พิมพ์ Y เพื่อดำเนินการต่อ

จากนั้น สามารถกด Y แล้วกด ENTER เพื่อยอมรับค่าเริ่มต้นสำหรับคำถามหลังจากนี้ทั้งหมด การดำเนินการนี้จะลบผู้ใช้ที่ไม่ระบุชื่อบางส่วนและฐานข้อมูลที่เอาไว้ทดสอบออก ปิดใช้งานการเข้าสู่ระบบ remote root เมื่อสคริปต์เสร็จสิ้น การติดตั้ง MySQL ของคุณจะปลอดภัย ตอนนี้สามารถก้าวไปสู่การสร้างผู้ใช้ฐานข้อมูลเฉพาะด้วย MySQL client ได้แล้ว
ขั้นตอนที่ 3 – การสร้างผู้ใช้ MySQL และการให้สิทธิ์
เมื่อติดตั้ง MySQL จะมีการสร้างบัญชี root ซึ่งสามารถใช้จัดการฐานข้อมูลได้ ผู้ใช้รายนี้มีสิทธิ์เต็มรูปแบบบนเซิร์ฟเวอร์ MySQL ซึ่งหมายความว่าจะสามารถควบคุมฐานข้อมูล ตาราง ผู้ใช้และอื่น ๆ ได้อย่างสมบูรณ์ สามารถเข้าใช้งานด้วยคำสั่งดังนี้
mysql -u root -p
เมื่อคุณเข้าถึง MySQL prompt แล้ว คุณสามารถสร้างผู้ใช้ใหม่ด้วยคำสั่ง CREATE USER ดังนี้ (สามารถเปลี่ยนชื่อผู้ใช้และรหัสผ่านเป็นของคุณเอง)
CREATE USER 'john'@'localhost' IDENTIFIED BY 'password';
ข้อแนะนำ
หากคุณวางแผนที่จะใช้ฐานข้อมูลนี้กับแอปพลิเคชัน PHP เช่น phpMyAdmin อาจต้องสร้างผู้ใช้ที่อนุญาตให้เข้าถึงปลั๊กอินด้วยวิธี mysql_native_password แบบเดิมที่ยังคงปลอดภัยแทน
CREATE USER 'john'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
หลังจากสร้างผู้ใช้ใหม่แล้ว คุณสามารถกำหนดสิทธิ์ที่เหมาะสมได้เลยโดยใช้คำสั่งดังนี้
GRANT PRIVILEGE ON database.table TO 'username'@'host';
ค่า PRIVILEGE จะกำหนดสิทธิ์ที่ผู้ใช้ได้รับอนุญาตให้ดำเนินการบนฐานข้อมูลและตารางที่ระบุ คุณสามารถให้สิทธิ์หลายรายการแก่ผู้ใช้คนเดียวกันได้ในคำสั่งเดียวโดยคั่นแต่ละรายการด้วยเครื่องหมายจุลภาค(,) คุณยังสามารถให้สิทธิ์ผู้ใช้อื่น ๆ ได้โดยการป้อนเครื่องหมายดอกจัน (*) แทนชื่อฐานข้อมูลและตาราง ใน SQL เครื่องหมายดอกจันเป็นอักขระพิเศษที่ใช้แทนฐานข้อมูลหรือตาราง “ทั้งหมด”
คำสั่งต่อไปนี้ให้สิทธิ์ผู้ใช้อื่น ๆ ในการดำเนินการใด ๆ กับฐานข้อมูล เช่น CREATE, ALTER และ DROP, ตารางและผู้ใช้ ตลอดจนอำนาจในการ INSERT, UPDATE และ DELETE ข้อมูลจากตารางใดๆ บนเซิร์ฟเวอร์ นอกจากนี้ยังให้ผู้ใช้สามารถสืบค้นข้อมูลด้วย SELECT สร้างคีย์นอกด้วยคีย์เวิร์ด REFERENCES และดำเนินการ FLUSH ด้วยสิทธิ์ RELOAD ดังนั้นควรกำหนดสิทธิ์ของผู้ใช้ให้ชัดเจน สามารถดูคำสั่ง อื่น ๆ ได้ที่นี่
เรียกใช้คำสั่ง GRANT นี้ โดยแทนที่ John ด้วยชื่อผู้ใช้ MySQL ของคุณเอง เพื่อให้สิทธิ์เหล่านี้แก่ผู้ใช้
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO john@'localhost' WITH GRANT OPTION;
อย่าลืมว่าคำสั่งนี้ยังรวมถึง WITH GRANT OPTION ด้วย ซึ่งจะช่วยให้ผู้ใช้ MySQL สามารถให้สิทธิ์ใด ๆ ที่มีแก่ผู้ใช้รายอื่นในระบบได้
คำเตือน ไม่ควรให้สิทธิ์ ALL PRIVILEGES แก่ผู้ใช้ MySQL คล้าย ๆ กับสิทธิ์ root เนื่องจากใครก็ตามที่สามารถเข้าถึงผู้ใช้ MySQL นี้จะสามารถควบคุมทุกฐานข้อมูลบนเซิร์ฟเวอร์ได้
แนะนำให้รันคำสั่ง FLUSH PRIVILEGES สิ่งนี้จะเพิ่มหน่วยความจำใด ๆ จากแคชของเซิร์ฟเวอร์ที่เป็นผลมาจากคำสั่ง CREATE USER และ GRANT ก่อนหน้านี้
FLUSH PRIVILEGES;
จากนั้นให้ออกจากหน้า MySQL
exit
สามารถทดสอบการเข้า MySQL ด้วยบัญชีผู้ใช้ที่สร้างได้ด้วยคำสั่งนี้
mysql -u john -p
ขั้นตอนที่ 4 – ทดสอบ MySQL
ไม่ว่าจะติดตั้งอย่างไร MySQL ควรเริ่มทำงานโดยอัตโนมัติ หากต้องการทดสอบ ให้ตรวจสอบด้วยคำสั่ง
systemctl status mysql.service
จะเห็นผลลัพธ์ดังนี้

จากรูป แสดงให้เห็นว่า MySQL ได้เริ่มทำงานแล้ว