MySQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) โอเพนซอร์ส ที่ทรงพลังและใช้กันอย่างแพร่หลาย จัดระเบียบข้อมูลในตารางข้อมูลเดี่ยวหรือหลายตาราง โดยชนิดข้อมูลอาจเกี่ยวข้องกัน Structured Query Language (SQL) ทำงานกับ RDBMS และเมื่อต้องการจัดเก็บหรือจัดการปริมาณข้อมูลมหาศาล จะใช้บริการฐานข้อมูลเชิงสัมพันธ์และ SQL
บทความนี้แสดงวิธีกำหนดค่า MySQL บนเซิร์ฟเวอร์ Ubuntu 18.04 รวมถึงการเปิดใช้งานการรับรองความถูกต้อง ตามด้วยการจัดการบริการ ในท้ายที่สุด คุณจะได้เรียนรู้วิธีทดสอบบริการเพื่อยืนยันการกำหนดค่าที่สำเร็จ
ขั้นตอนที่ 1: ติดตั้ง MySQL Client
ติดตั้ง mysql-client เพื่อเชื่อมต่อกับเซิร์ฟเวอร์จากระยะไกล:
sudo apt install mysql-client -y
ตรวจสอบเวอร์ชันไคลเอ็นต์เพื่อยืนยันการติดตั้งสำเร็จ:
mysql -V
ผลลัพธ์:
mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
ตอนนี้คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อระยะไกลกับเซิร์ฟเวอร์ MySQL:
mysql -u <username> -p <password> -h HOSTNAME_OR_IP
ขั้นตอนที่ 2: ติดตั้ง MySQL Server
ก่อนติดตั้ง MySQL ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ Ubuntu ติดตั้งและกำหนดค่าแล้ว เซิร์ฟเวอร์ Ubuntu 18.04 ค่าเริ่มต้นมี MySQL ล่าสุดรุ่น 5.7 ในคลัง ใช้คำสั่ง apt อัปเดตแพ็กเกจระบบจากคลัง:
sudo apt update
ตอนนี้ใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็กเกจ MySQL server:
sudo apt install mysql-server -y
ขั้นตอนที่ 3: กำหนดค่า MySQL
ในยุคที่มีภัยคุกคามไซเบอร์อย่างต่อเนื่อง การเปลี่ยนตัวเลือกเริ่มต้นหลังติดตั้งเซิร์ฟเวอร์สำเร็จเป็นมาตรฐาน ส่วนนี้แนะนำการกำหนดค่าเซิร์ฟเวอร์ MySQL เพื่อกำจัดตัวเลือกเริ่มต้นที่ไม่ปลอดภัย เช่น การเข้าสู่ระบบ root แบบระยะไกล บัญชีผู้ใช้เริ่มต้น ฯลฯ MySQL ทำให้งานนี้ง่ายด้วยการรันสคริปต์ความปลอดภัยเพียงคำสั่งเดียว
sudo mysql_secure_installation
สคริปต์จะถามหลายตัวเลือก ต้องตอบ Yes หรือ No เพื่อเปลี่ยนความปลอดภัยเริ่มต้นของ MySQL เช่น พรอมต์แรกถามว่าต้องการตั้งปลั๊กอินตรวจสอบรหัสผ่านหรือไม่ ตอบ Yes และดำเนินต่อ
พรอมต์ถัดไปถามตั้งรหัสผ่านบัญชี root ของ MySQL คุณจะเห็นว่าการเปิดใช้ปลั๊กอิน Validate Password อนุญาตให้ตั้งความแข็งแรงของรหัสผ่านตาม 3 ระดับนโยบายความปลอดภัยและความยาว
ป้อนหมายเลขที่ต้องการเพื่อตั้งความแข็งแรงของรหัสผ่าน ระบบจะขอตั้งรหัสผ่านใหม่และพิมพ์ซ้ำเพื่อยืนยัน:
หลังตั้งรหัสผ่าน จะแสดงความแข็งแรงและถามว่าต้องการดำเนินต่อหรือไม่
ต่อมา จะถามคำถามเพิ่มเติม:
- ลบผู้ใช้ทดสอบแะนอนิมัส (anonymous test user)
- ปิดการเข้าสู่ระบบระยะไกลจากผู้ใช้ root
- ลบฐานข้อมูลทดสอบ (test databases)
- โหลดตารางสิทธิ์ใหม่ (Reload privileges table) เพื่อบันทึกการเปลี่ยนแปลงทั้งหมด
พิมพ์ Y เพื่อดำเนินต่อไปด้วยค่าเริ่มต้นเพื่อตั้งกฎความปลอดภัย
รุ่น MySQL เก่า (ก่อน 5.7.6) ต้องเริ่มต้นโฟลเดอร์ฐานข้อมูลด้วยตนเอง ส่วนรุ่นหลังจากนั้น ให้รันคำสั่ง:
mysqld --initialize
ขั้นตอนที่ 4: ปรับการรับรองความถูกต้องของผู้ใช้ MySQL
ไม่ว่าจะตั้งรหัสผ่านบัญชีผู้ใช้ MySQL แล้ว การตั้งค่าการรับรองเริ่มต้นจะปิดการใช้รหัสผ่านระหว่างการเชื่อมต่อ แทนที่จะรับรองผู้ใช้โดยอัตโนมัติด้วยปลั๊กอิน auth_socket ปลั๊กอินนี้ดีสำหรับความสะดวก แต่ไม่เหมาะหากต้องการเข้าถึงฐานข้อมูลจากไคลเอ็นต์ระยะไกล
การเข้าถึงฐานข้อมูลโดยไม่มีรหัสผ่าน ทำให้กระบวนการทำงานซับซ้อนเมื่อถูกเข้าถึงโดยโปรแกรมภายนอก ส่วนนี้สรุป 2 วิธีในการรับรองผู้ใช้ตอนเชื่อมต่อ:
1. การรับรองผู้ใช้ root ด้วยรหัสผ่าน
เพื่อให้รับรองผู้ใช้ผ่านรหัสผ่าน คุณสามารถเปลี่ยนปลั๊กอินจาก "auth_socket" เป็น "mysql_native_password" เพื่อทำเช่นนี้ ให้เปิดหน้าจอพรอมต์ MySQL ด้วยคำสั่ง sudo mysql และตรวจสอบปลั๊กอินที่ใช้สำหรับการรับรองผู้ใช้:
SELECT user, authentication_string, plugin, host FROM mysql.user;
ภาพหน้าจอด้านบนแสดงว่าไคลเอ็นต์ root รับรองตัวเองด้วยปลั๊กอิน "auth_socket" เพื่อเริ่มต้นการรับรองไคลเอ็นต์ root ด้วยรหัสผ่าน ให้ใช้คำสั่ง ALTER USER เพื่อตั้งปลั๊กอิน "mysql_native_password"
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
บันทึกการเปลี่ยนแปลงข้างต้น:
FLUSH PRIVILEGES;
คำสั่ง MySQL "FLUSH PRIVILEGES" บันทึกการเปลี่ยนแปลงในตารางฐานข้อมูลที่ทำโดยคำสั่ง ALTER, INSERT, UPDATE, และ DELETE
ตอนนี้เพื่อยืนยันกลยุทธ์การรับรองที่ใช้โดยแต่ละผู้ใช้ และให้แน่ใจว่าปลั๊กอิน "auth_socket" ไม่ได้ถูกใช้โดยไคลเอ็นต์ root ให้รันคำสั่งอีกครั้ง:
SELECT user,authentication_string,plugin,host FROM mysql.user;
ตอนนี้ผู้ใช้ root สามารถเชื่อมต่อกับเซิร์ฟเวอร์ด้วยการรับรองผ่านคำสั่ง:
sudo mysql -u root -p
2. สร้างผู้ใช้เฉพาะเจาะจง
อีกวิธีหนึ่งในการเปิดใช้งานการรับรองโดยไม่ใช้ mysql_native_password คือการสร้างผู้ใช้เฉพาะเจาะจง ดังนี้:
sudo mysql
สร้างบัญชีใหม่และให้สิทธิ์ทั้งหมด (ALL PRIVILEGES) เพื่อมอบการควบคุมระดับผู้ดูแลให้ผู้ใช้ใหม่ จากนั้นออกจากพรอมต์ MySQL รันคำสั่ง SQL ต่อไปนี้ทีละคำสั่งเพื่อบรรลุเป้าหมาย:
CREATE USER 'ubuntu'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'localhost' WITH GRANT OPTION;
exit
จัดการและทดสอบบริการ MySQL ด้วย systemctl
ตั้งค่าบริการให้รันตอนเริ่มต้นเซิร์ฟเวอร์ Ubuntu ด้วยคำสั่ง systemctl enable:
sudo systemctl enable mysql
นอกจากนี้ คุณสามารถทดสอบว่าเซิร์ฟเวอร์ทำงานอยู่ได้โดยพิมพ์:
sudo systemctl status mysql
หรือ
sudo systemctl status mysql.service
บริการจะรันอัตโนมัติหลังติดตั้ง MySQL แต่หากไม่รัน คุณสามารถเริ่มบริการด้วยคำสั่ง:
sudo systemctl start mysql
เริ่มต้นใช้งาน MySQL Server บน Ubuntu
MySQL เป็นระบบจัดการฐานข้อมูลโอเพนซอร์ส ใช้งานง่าย ขยายได้ และทนทาน เป็นส่วนสำคัญของสแต็ก LAMP/LEMP หรือเทคโนโลยีเว็บแอปพลิเคชัน RDBMS นี้เสนอการติดตั้งง่ายและกำหนดค่าสะดวกในรุ่นล่าสุด
บทความนี้แนะนำการสร้างการตั้งค่า MySQL พื้นฐานที่จะช่วยให้คุณเริ่มเรียนรู้การทำงานของ MySQL ได้ รวมถึงมาตรการความปลอดภัยเริ่มต้นที่สำคัญในการกำหนดค่า เพื่อปิดช่องโหว่ในการตั้งค่าเริ่มต้น คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการรักษาความปลอดภัย MySQL ด้วยเคล็ดลับขั้นสูง