วิธีติดตั้ง MySQL บน Ubuntu 20.04

Install MySQL Ubuntu 20.04

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 ได้เริ่มทำงานแล้ว

Was this article helpful?

Related Articles