.## 1. ทำไมต้องสร้างผู้ใช้ใน MySQL?
ความสำคัญของการจัดการผู้ใช้ใน MySQL
MySQL เป็นระบบจัดการฐานข้อมูลที่ใช้กันอย่างกว้างขวางโดยบริษัทและโครงการส่วนบุคคล และการจัดการผู้ใช้เป็นสิ่งจำเป็นสำหรับการรักษาความปลอดภัยและประสิทธิภาพของระบบ ตัวอย่างเช่น ในแอปพลิเคชันขนาดใหญ่ นักพัฒนาและผู้ดูแลระบบหลายคนต้องการเข้าถึงฐานข้อมูล ในกรณีเช่นนี้ การกำหนดสิทธิ์ที่แตกต่างให้กับผู้ใช้แต่ละคนและการจำกัดการเข้าถึงข้อมูลและการดำเนินการอย่างเหมาะสมจึงเป็นสิ่งสำคัญ
การมอบสิทธิ์เฉพาะให้ผู้ใช้สามารถลดความเสี่ยงของการสูญเสียข้อมูลหรือปัญหาด้านความปลอดภัยที่เกิดจากการดำเนินการที่ไม่จำเป็นได้ นอกจากนี้ การจัดการรหัสผ่านที่เหมาะสมสำหรับผู้ใช้แต่ละคนช่วยป้องกันการเข้าถึงจากภายนอกโดยไม่ได้รับอนุญาต ผลลัพธ์คือความปลอดภัยของข้อมูลและประสิทธิภาพของระบบทั้งสองได้รับการปรับปรุง
2. ขั้นตอนการสร้างผู้ใช้ใน MySQL
คำสั่งพื้นฐานสำหรับการสร้างผู้ใช้
เพื่อสร้างผู้ใช้ใน MySQL ให้ใช้คำสั่ง CREATE USER คำสั่งต่อไปนี้จะสร้างผู้ใช้ใหม่
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
'username': ชื่อของผู้ใช้ใหม่ที่จะสร้าง'localhost': ตำแหน่งที่ผู้ใช้สามารถเชื่อมต่อได้ (หากตั้งเป็น localhost การเข้าถึงจะจำกัดอยู่ที่เซิร์ฟเวอร์เดียวกัน)'password': รหัสผ่านที่กำหนดให้กับผู้ใช้
โดยค่าเริ่มต้น ผู้ใช้สามารถเข้าถึงฐานข้อมูลจาก localhost หากต้องการให้เข้าถึงจากที่อยู่ IP อื่น ให้แทนที่ localhost ด้วยที่อยู่ IP ที่ต้องการ
ตัวเลือกเพิ่มเติมในการสร้างผู้ใช้
ใน MySQL คุณยังสามารถกำหนดตัวเลือกเพิ่มเติมเมื่อสร้างผู้ใช้ได้ ตัวอย่างเช่น สามารถระบุปลั๊กอินการตรวจสอบสิทธิ์เฉพาะได้ตามด้านล่าง
CREATE USER 'username'@'localhost' IDENTIFIED WITH 'auth_plugin' BY 'password';
auth_plugin ระบุวิธีการตรวจสอบสิทธิ์ของ MySQL (เช่น caching_sha2_password) ซึ่งช่วยเพิ่มความปลอดภัยของรหัสผ่าน

3. การมอบสิทธิ์ให้ผู้ใช้
ภาพรวมและความสำคัญของสิทธิ์
โดยค่าเริ่มต้น ผู้ใช้ MySQL ที่สร้างใหม่ไม่สามารถทำการดำเนินการใด ๆ ได้ เพื่อให้ผู้ใช้สามารถทำงานได้ คุณต้องมอบสิทธิ์โดยใช้คำสั่ง GRANT ตัวอย่างเช่น เพื่อมอบสิทธิ์ทั้งหมดให้กับผู้ใช้ ให้ใช้คำสั่งต่อไปนี้
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
คำสั่งนี้ทำให้ผู้ใช้ที่ระบุสามารถดำเนินการทั้งหมดบนตารางทั้งหมดภายใน database_name อย่างไรก็ตาม การมอบสิทธิ์เต็มรูปแบบอาจเสี่ยงต่อความปลอดภัย ดังนั้นจึงแนะนำให้มอบสิทธิ์เฉพาะการดำเนินการที่จำเป็นจริง ๆ เท่านั้น
วิธีมอบสิทธิ์เฉพาะ
ใน MySQL คุณสามารถมอบสิทธิ์เฉพาะได้ตามด้านล่าง
- สิทธิ์ SELECT (อ่านข้อมูล)
GRANT SELECT ON database_name.* TO 'username'@'localhost';
- สิทธิ์ INSERT (แทรกข้อมูล)
GRANT INSERT ON database_name.* TO 'username'@'localhost';
- สิทธิ์ UPDATE (อัปเดตข้อมูล)
GRANT UPDATE ON database_name.* TO 'username'@'localhost';
สิทธิ์เหล่านี้สามารถกำหนดให้กับฐานข้อมูลทั้งหมดหรือกับตารางเฉพาะได้ ตัวอย่างเช่น หากต้องการให้ดำเนินการได้เฉพาะตารางหนึ่ง ให้ระบุดังนี้
GRANT SELECT ON database_name.table_name TO 'username'@'localhost';
4. การตรวจสอบและจัดการสิทธิ์ของผู้ใช้
การตรวจสอบสิทธิ์ของผู้ใช้
เพื่อดูสิทธิ์ของผู้ใช้ที่สร้างขึ้น ให้ใช้คำสั่ง SHOW GRANTS ตัวอย่างเช่น คำสั่งต่อไปนี้จะแสดงสิทธิ์ปัจจุบันของผู้ใช้ที่ระบุ
SHOW GRANTS FOR 'username'@'localhost';
ผลลัพธ์ของคำสั่งนี้จะแสดงรายการสิทธิ์ทั้งหมดที่มอบให้กับผู้ใช้ในขณะนั้น ซึ่งช่วยให้คุณตรวจสอบว่าการกำหนดสิทธิ์ถูกต้องหรือไม่และปรับเปลี่ยนได้ตามต้องการ
การเพิกถอนสิทธิ์ (คำสั่ง REVOKE)
เพื่อยกเลิกสิทธิ์ที่ไม่จำเป็น ให้ใช้คำสั่ง REVOKE ตัวอย่างเช่น หากต้องการลบสิทธิ์ SELECT ให้รันคำสั่งต่อไปนี้
REVOKE SELECT ON database_name.* FROM 'username'@'localhost';
หลังจากเพิกถอนสิทธิ์แล้ว อย่าลืมยืนยันว่าการเปลี่ยนแปลงได้ถูกนำไปใช้แล้วโดยใช้คำสั่ง SHOW GRANTS
5. แนวปฏิบัติที่ดีที่สุดสำหรับการจัดการผู้ใช้ MySQL
หลักการสิทธิ์ขั้นต่ำ
ในฐานะหลักการพื้นฐานของการจัดการฐานข้อมูล แนะนำให้มอบสิทธิ์ให้ผู้ใช้เฉพาะสิทธิ์ขั้นต่ำที่จำเป็นเท่านั้น สิ่งนี้ช่วยป้องกันการสูญเสียข้อมูลที่เกิดจากการดำเนินการโดยไม่ได้ตั้งใจหรือการเข้าถึงที่ไม่ได้รับอนุญาต ตัวอย่างเช่น ผู้ใช้ที่ต้องการอ่านข้อมูลจากฐานข้อมูลเท่านั้นควรได้รับสิทธิ์ SELECT เท่านั้นและไม่มีสิทธิ์อื่น
การเสริมสร้างนโยบายรหัสผ่าน
สำคัญที่จะเปลี่ยนรหัสผ่านผู้ใช้ MySQL เป็นประจำและนำนโยบายรหัสผ่านที่แข็งแกร่งมาใช้ คุณสามารถใช้คำสั่ง ALTER USER เพื่อเปลี่ยนรหัสผ่านหรือกำหนดการตั้งค่าการหมดอายุ
ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';
เพื่อตั้งค่านโยบายการหมดอายุรหัสผ่าน ให้กำหนดค่าดังนี้
ALTER USER 'username'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
สิ่งนี้กำหนดให้อัปเดตรหัสผ่านทุก 90 วัน
การตรวจสอบสิทธิ์เป็นประจำ
สิทธิ์ของผู้ใช้ควรได้รับการตรวจสอบเป็นระยะ และสิทธิ์ที่ไม่จำเป็นควรถูกนำออก สิ่งนี้ช่วยรักษาความปลอดภัยของระบบและลดความเสี่ยงในอนาคต ใช้ SHOW GRANTS เป็นประจำเพื่อตรวจสอบสิทธิ์ของผู้ใช้และจัดการให้เหมาะสม
6. สรุป
การจัดการผู้ใช้ใน MySQL เป็นส่วนประกอบที่สำคัญในการรักษาความปลอดภัยและประสิทธิภาพของระบบ โดยการสร้างผู้ใช้ใหม่ด้วยคำสั่ง CREATE USER และมอบสิทธิ์ที่เหมาะสมโดยใช้คำสั่ง GRANT คุณสามารถดำเนินการฐานข้อมูลได้อย่างมีประสิทธิภาพและปลอดภัย นอกจากนี้ การนำหลักการสิทธิ์ขั้นต่ำและนโยบายรหัสผ่านที่แข็งแกร่งมาใช้จะลดความเสี่ยงของการเข้าถึงที่ไม่ได้รับอนุญาตและข้อผิดพลาดในการดำเนินการ
การตรวจสอบสิทธิ์เป็นประจำและเสริมสร้างความปลอดภัยของระบบโดยรวมจะนำไปสู่แนวปฏิบัติการจัดการฐานข้อมูลที่เหมาะสมที่สุด


