目次
1. บทนำ
การจัดการผู้ใช้ MySQL เป็นงานสำคัญที่ขาดไม่ได้สำหรับความปลอดภัยของฐานข้อมูลและการดำเนินงานที่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่ง การเข้าใจว่าผู้ใช้คนใดสามารถเข้าถึงฐานข้อมูลได้และมีสิทธิ์อะไรบ้าง จะช่วยให้สามารถจำกัดการเข้าถึงและเสริมความปลอดภัยได้ ในบทความนี้ เราจะอธิบายอย่างกว้างขวางตั้งแต่วิธีการแสดงรายการผู้ใช้ MySQL การดึงข้อมูลรายละเอียด วิธีการสร้างและจัดการผู้ใช้ ไปจนถึงการแก้ไขข้อผิดพลาดที่พบบ่อย ด้วยวิธีนี้ คุณจะเข้าใจพื้นฐานและขั้นตอนการปฏิบัติที่ใช้งานได้จริงของการจัดการผู้ใช้ MySQL2. วิธีการดึงรายการผู้ใช้
เพื่อดึงรายการผู้ใช้ใน MySQL ให้ใช้ตาราง “mysql.user” ตารางนี้เก็บข้อมูลของผู้ใช้ทั้งหมดที่ลงทะเบียนใน MySQL และสามารถแสดงข้อมูลที่ต้องการด้วยคำสั่งง่าย ๆพื้นฐานการแสดงรายการผู้ใช้
ก่อนอื่น ให้เข้าสู่ระบบ MySQL แล้วรันคำสั่งต่อไปนี้SELECT Host, User FROM mysql.user;
คำสั่งนี้จะแสดง “ชื่อโฮสต์” และ “ชื่อผู้ใช้” ของแต่ละผู้ใช้ในรูปแบบรายการ ตัวอย่างเช่น “localhost” หรือ “127.0.0.1” อาจปรากฏเป็นชื่อโฮสต์ ซึ่งเป็นการเชื่อมต่อภายในของ IPv4 และ IPv6 ตามลำดับ นี่เป็นการตั้งค่าที่มักพบในการจัดการผู้ใช้ในสภาพแวดล้อมท้องถิ่นการดึงข้อมูลผู้ใช้ทั้งหมด
นอกจากนี้ เพื่อยืนยันข้อมูลที่ละเอียดขึ้น สามารถแสดงคอลัมน์ทั้งหมดของตาราง “mysql.user” ด้วยคำสั่งต่อไปนี้SELECT * FROM mysql.user;
คำสั่งนี้จะแสดงข้อมูลรายละเอียดของแต่ละผู้ใช้ (เช่น ข้อมูลการรับรองและการตั้งค่าสิทธิ) แต่โดยทั่วไป การระบุเฉพาะคอลัมน์ที่ต้องการจะทำให้มองเห็นง่ายกว่า การใช้วิธีนี้จะทำให้ได้ข้อมูลที่กว้างขวางขึ้น แต่เพื่อให้ผลลัพธ์เป็นระเบียบและอ่านง่าย การเลือกคอลัมน์เฉพาะก็เป็นวิธีที่มีประโยชน์3. การดึงข้อมูลรายละเอียดของผู้ใช้
ใน MySQL สามารถดึงข้อมูลแฮชรหัสผ่านและข้อมูลสิทธิ์ของผู้ใช้ได้ ซึ่งทำให้การจัดการผู้ใช้มีประสิทธิภาพมากขึ้นวิธีการแสดงแฮชรหัสผ่าน
ใน MySQL รหัสผ่านจะถูกเข้ารหัสและเก็บเป็นแฮชในคอลัมน์ “authentication_string” สามารถตรวจสอบชื่อโฮสต์ของผู้ใช้ ชื่อผู้ใช้ และแฮชรหัสผ่านด้วยคำสั่งต่อไปนี้SELECT Host, User, authentication_string FROM mysql.user;
ผลลัพธ์นี้ทำให้คุณสามารถตรวจสอบได้ว่าผู้ใช้แต่ละคนมีการตั้งรหัสผ่านหรือไม่ ค่าฮาชของรหัสผ่านจะแสดงออกมาแต่ไม่สามารถถอดรหัสได้ ทำให้ความปลอดภัยยังคงอยู่ วิธีนี้เป็นประโยชน์อย่างมากเมื่อทำการตรวจสอบผู้ใช้ใหม่หรือสถานะการให้สิทธิ์การตรวจสอบสิทธิ์ของผู้ใช้เฉพาะ
เพื่อดูว่าผู้ใช้มีสิทธิ์อะไรบ้างในฐานข้อมูลหรือ ตาราง ให้ใช้คำสั่ง “SHOW GRITS”SHOW GRANTS FOR 'ชื่อผู้ใช้'@'ชื่อโฮสต์';
คำสั่งนี้จะแสดงรายการสิทธิ์ทั้งหมดที่มอบให้กับผู้ใช้ที่ระบุ เป็นคำสั่งที่เป็นประโยชน์สำหรับผู้ดูแลฐานข้อมูลเมื่อตัดสินใจว่าจะมอบสิทธิ์ใดให้กับผู้ใช้เฉพาะ4. การสร้างและการจัดการผู้ใช้
MySQLจะแนะนำวิธีการสร้างผู้ใช้ใหม่ใน MySQL และตั้งค่า/เปลี่ยนแปลงสิทธิ์การสร้างผู้ใช้ใหม่
หากต้องการสร้างผู้ใช้ใหม่ ให้ใช้คำสั่ง “CREATE USER” ตัวอย่างต่อไปนี้เป็นการสร้างผู้ใช้ “example_user” และตั้งรหัสผ่านเป็น “password123”CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password123';
หลังจากสร้างผู้ใช้แล้ว จำเป็นต้องเรียกใช้ “FLUSH PRIVILEGES” เพื่อให้ MySQL ปรับใช้การเปลี่ยนแปลงFLUSH PRIVILEGES;
ข้อควรระวังในการลบผู้ใช้
เพื่อทำการลบผู้ใช้ที่ไม่ต้องการ ให้ใช้คำสั่ง “DROP USER” อย่างไรก็ตาม ก่อนลบผู้ใช้ ควรตรวจสอบผลกระทบต่อสิทธิ์และข้อมูลที่เกี่ยวข้อง ตัวอย่างเช่น หากผู้ใช้ที่กำลังลบเชื่อมต่อกับระบบหรือบริการอื่น ๆ หลังจากลบอาจทำให้ไม่สามารถเข้าถึงได้ ดังนั้นจึงต้องระมัดระวัง5. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
ในการจัดการผู้ใช้ของ MySQL อาจเกิดข้อผิดพลาดได้ ที่นี่เราจะอธิบายข้อผิดพลาดที่พบบ่อยและวิธีแก้ไขข้อผิดพลาดสิทธิ์「Access denied」
ข้อผิดพลาด「Access denied」เกิดขึ้นเมื่อผู้ใช้ไม่มีสิทธิ์ที่เหมาะสมต่อฐานข้อมูลหรือ ตาราง ในกรณีนี้ ผู้ดูแลระบบสามารถมอบสิทธิ์ที่จำเป็นให้กับผู้ใช้ที่เกี่ยวข้องเพื่อแก้ไขได้ สามารถมอบสิทธิ์ต่อฐานข้อมูลเฉพาะด้วยคำสั่งต่อไปนี้GRANT ALL PRIVILEGES ON database_name.* TO 'ชื่อผู้ใช้'@'ชื่อโฮสต์';
FLUSH PRIVILEGES;
ข้อผิดพลาดการตรวจสอบผู้ใช้「Unknown user」
ข้อผิดพลาด「Unknown user」เกิดขึ้นเมื่อผู้ใช้ที่ระบุไม่มีอยู่ หากพบข้อผิดพลาดนี้ ให้ตรวจสอบว่าชื่อผู้ใช้และโฮสต์ถูกระบุอย่างถูกต้องหรือไม่ หรือผู้ใช้ดังกล่าวมีอยู่ในตาราง「mysql.user」หรือไม่ข้อผิดพลาดที่เกี่ยวกับรหัสผ่าน
หากเกิดความไม่ตรงกันของรหัสผ่านหรือข้อผิดพลาดการตรวจสอบ สามารถแก้ไขได้โดยตั้งค่ารหัสผ่านใหม่อีกครั้ง ใช้คำสั่งต่อไปนี้เพื่อรีเซ็ตรหัสผ่านALTER USER 'ชื่อผู้ใช้'@'ชื่อโฮสต์' IDENTIFIED BY 'รหัสผ่านใหม่';