ThaiCERT: Thai Computer Emergency Response Team
ศูนย์ประสานงานการรักษาความปลอดภัยคอมพิวเตอร์ ประเทศไทย 
 
 
 



ชื่อเรื่อง : เรื่องน่ารู้เกี่ยวกับความปลอดภัยของ MySQL Server
เรียบเรียงโดย : มนัชยา ชมธวัช
เผยแพร่เมื่อ : 18 พฤศจิกายน 2545

MySQL เป็นฐานข้อมูลแบบ open source ที่ได้รับความนิยมในการใช้งานสูงสุดโปรแกรมหนึ่งบนเครื่องให้บริการ มีความสามารถในการจัดการกับฐานข้อมูลด้วยภาษา SQL (Structures Query Language) อย่างมีประสิทธิภาพ มีความรวดเร็วในการทำงาน รองรับการทำงานจากผู้ใช้หลายๆ คนและหลายๆ งานได้ในขณะเดียวกัน

MySQL ถูกพัฒนาขึ้นโดย MySQL AB โดยมีลิขสิทธิ์การใช้งาน 2 แบบ นั่นคือ ผู้ดูแลระบบสามารถใช้งานซอฟต์แวร์ MySQL ได้โดยไม่มีค่าใช้จ่ายใดๆ ภายใต้ลิขสิทธิ์ของ GNU General Public License (http://www.gnu.org/licenses/) หรืออาจเลือกใช้แบบที่มีลิขสิทธิ์ทางการค้าของ MySQL AB ซึ่งเป็นผู้ผลิตและพัฒนาซอฟต์แวร์โดยตรงก็ได้ หากไม่ต้องการเกี่ยวข้องกับข้อตกลงเรื่อง GPL รายละเอียดเพิ่มเติมเกี่ยวกับโปรแกรม MySQL สามารถหาข้อมูลได้จาก http://www.mysql.com

คำอธิบายเพิ่มเติมเกี่ยวกับหน้าที่ ความสามารถและการทำงานของโปรแกรม MySQL มีดังต่อไปนี้

ในระบบปฏิบัติการ Red Hat Linux นั้น มีโปรแกรมที่สามารถใช้งานเป็นฐานข้อมูลให้ผู้ดูแลระบบสามารถเลือกใช้งานได้หลายโปรแกรม เช่น MySQL และ PostgreSQL ผู้ดูแลระบบสามารถเลือกติดตั้งได้ทั้งในขณะที่ติดตั้งระบบปฏิบัติการ Red Hat Linux หรือจะติดตั้งภายหลังจากที่ติดตั้งระบบปฏิบัติการก็ได้ อย่างไรก็ตาม สาเหตุที่ผู้ใช้งานจำนวนมากนิยมใช้งานโปรแกรม MySQL คือ MySQL สามารถทำงานได้อย่างรวดเร็ว น่าเชื่อถือและใช้งานได้ง่าย เมื่อเปรียบเทียบประสิทธิภาพในการทำงานระหว่างโปรแกรม MySQL และ PostgreSQL โดยพิจารณาจากการประมวลผลแต่ละคำสั่งได้ผลลัพธ์ดังรูปที่ 1
นอกจากนั้น MySQL ถูกออกแบบและพัฒนาขึ้นมาเพื่อทำหน้าเป็นเครื่องให้บริการรองรับการจัดการกับฐานข้อมูลขนาดใหญ่ ซึ่งการพัฒนายังคงดำเนินอยู่อย่างต่อเนื่อง ส่งผลให้มีฟังก์ชันการทำงานใหม่ๆ ที่อำนวยความสะดวกแก่ผู้ใช้งานเพิ่มขึ้นอยู่ตลอดเวลา รวมไปถึงการปรับปรุงด้านความต่อเนื่อง ความเร็วในการทำงาน และความปลอดภัย ทำให้ MySQL เหมาะสมต่อการนำไปใช้งานเพื่อเข้าถึงฐานข้อมูลบนเครือข่ายอินเทอร์เน็ต

รูปที่ 1 แสดงผลการเปรียบเทียบการทำงานระหว่างโปรแกรม MySQL และ PostgreSQL

ความเสี่ยงและวิธีการสร้างความปลอดภัยให้ฐานข้อมูล

ก่อนที่จะกล่าวถึงขั้นตอนการปรับแต่งค่าความปลอดภัยให้กับโปรแกรม MySQL ผู้ดูแลระบบควรจะต้องทราบถึงความเสี่ยงที่เกิดขึ้นจากการใช้งานฐานข้อมูลและหลักปฏิบัติโดยทั่วไปในการสร้างความปลอดภัยให้ฐานข้อมูลก่อน ซึ่งรายละเอียดที่จะอธิบายในหัวข้อนี้จะกล่าวถึงภาพรวม เพื่อให้ผู้ดูแลระบบสามารถนำไปประยุกต์ใช้ได้กับฐานข้อมูลชนิดอื่นๆ

ความปลอดภัยของฐานข้อมูลเป็นสิ่งสำคัญมาก เนื่องจากข้อมูลที่เก็บไว้ในฐานข้อมูลถือเป็นองค์ประกอบหลักในการดำเนินงานขององค์กรและมีความอ่อนไหวค่อนข้างสูง ได้แก่ เช่น ข้อมูลทางธุรกิจ ข้อมูลลูกค้า ข้อมูลพนักงาน ข้อมูลลับหรือข้อมูลที่เผยแพร่บนเว็บไซต์ขององค์กร วิธีการสร้างความปลอดภัยให้กับฐานข้อมูลค่อนข้างเป็นเรื่องเฉพาะ และมีความซับซ้อนแตกต่างจากการสร้างความปลอดภัยให้กับเครือข่ายหรือระบบปฏิบัติการ

ทั้งนี้ จุดบกพร่องที่ทำให้เกิดความเสี่ยงต่อความไม่ปลอดภัยของฐานข้อมูลมีสาเหตุจาก ความซับซ้อนของระบบฐานข้อมูล การเก็บรหัสผ่านอย่างไม่ปลอดภัย การตั้งค่าการทำงานที่ผิดพลาด หรือ backdoor ของระบบที่ผู้ดูแลระบบไม่ทราบ การลดความเสี่ยงของข้อบกพร่องเหล่านี้ทำได้โดยการกำหนดหลักปฏิบัติในการใช้งานฐานข้อมูลดังนี้

การสร้างความปลอดภัยให้กับฐานข้อมูลจะต้องตั้งอยู่บนพื้นฐานต่อไปนี้ คือ

  1. ความลับและความปลอดภัย: ข้อมูลจะต้องไปถูกเปิดเผยต่อผู้ที่ไม่ได้รับสิทธิ์ในการเข้าถึง
  2. ความถูกต้อง ความสมบูรณ์และการตรวจสอบตัวตนผู้ใช้งาน: ข้อมูลจะต้องไม่ถูกแก้ไขหรือยักยอกทั้งโดยเจตนาร้ายหรือโดยไม่เจตนาก็ตาม นอกจากนั้น จะต้องพิสูจน์ได้ว่าต้นทางของข้อมูลมาจากที่ใดหรือใคร
  3. ความพร้อมใช้และความสามารถในการกู้คืน: ระบบฐานข้อมูลจะต้องถูกปกป้องให้พร้อมใช้งานได้ตลอดเวลา รวมถึงจะต้องกู้คืนได้หากข้อมูลสูญหาย

นอกจากนั้น การสร้างความปลอดภัยให้กับฐานข้อมูลจำเป็นต้องมั่นใจว่าได้มีการป้องกันถึงระดับลึก ได้แก่ การสร้างความปลอดภัยให้กับเครือข่าย ซึ่งอาจทำได้โดยการป้องกันที่ไฟร์วอลล์ เราเตอร์ ระบบตรวจจับผู้บุกรุก (IDS) และการสร้างความปลอดภัยให้กับระบบปฏิบัติการ เพื่อให้แน่ใจได้ว่าการเข้าถึงฐานข้อมูลโดยไม่ได้รับอนุญาตจะไม่เป็นผลมาจากการกำหนดค่าที่ผิดพลาดให้กับระบบปฏิบัติการและอุปกรณ์เหล่านั้น

หลักการสำคัญในการสร้างความปลอดภัยให้กับฐานข้อมูลนั้น ผู้ดูแลระบบควรจะคำนึงถึงองค์ประกอบต่อไปนี้ เพื่อนำไปพิจารณาประยุกต์ใช้กับระบบฐานข้อมูลของตนเองตามความเหมาะสม

การสร้างความปลอดภัยให้โปรแกรม MySQL

ผู้ดูแลระบบที่ใช้งานโปรแกรม MySQL เป็นฐานข้อมูลในเครื่องให้บริการใดๆ จำเป็นต้องทราบถึงวิธีการสร้างความปลอดภัยให้กับโปรแกรม MySQL ที่ใช้งาน เนื่องจากการใช้งานฐานข้อมูลทำให้เกิดความเสี่ยงต่อความปลอดภัยของเครื่องตามที่ได้อธิบายแล้วข้างต้น สำหรับหัวข้อนี้จะแสดงรายละเอียดถึงวิธีการในการสร้างความปลอดภัยให้โปรแกรม MySQL บนระบบปฏิบัติการ Red Hat Linux โดยเฉพาะ

หากผู้ดูแลระบบติดตั้งโปรแกรม MySQL โดยเลือกติดตั้งในขณะที่ติดตั้งระบบปฏิบัติการ หรือติดตั้งโดยใช้แพ็คเกจชนิด RPM จะมีข้อดีคือ ผู้ดูแลระบบจะสามารถใช้โปรแกรม up2date (ตามที่ได้อธิบายไว้ในบทก่อนหน้านี้) ในการตรวจสอบแก้ไขช่องโหว่ที่เกิดขึ้นกับโปรแกรมได้ ในทางตรงกันข้าม หากผู้ดูแลระบบเลือกติดตั้งโปรแกรมโดยคอมไพล์จากไฟล์ต้นฉบับด้วยตนเอง จะมีข้อดีคือโปรแกรม MySQL ที่ได้จะมีความยืดหยุ่นมากกว่า ผู้ดูแลระบบสามารถเลือกออปชันและไลบรารี่ที่จะใช้งานได้ตามต้องการมากกว่า อย่างไรก็ตาม ไม่มีออปชันใดๆ เกี่ยวข้องกับการสร้างความปลอดภัยที่ควรได้รับการพิจารณาเป็นพิเศษในการติดตั้งโปรแกรม MySQL โดยการคอมไพล์จากไฟล์ต้นฉบับ จึงไม่นำมาอธิบายในที่นี้ สำหรับผู้ดูแลระบบที่ต้องการดาวน์โหลดโปรแกรม MySQL หรือตรวจสอบเวอร์ชันของโปรแกรม MySQL ที่จะใช้งาน สามารถหาข้อมูลได้ที่ http://www.mysql.com/downloads/index.html

ก่อนที่จะอธิบายถึงวิธีการสร้างความปลอดภัยให้โปรแกรม MySQL จะขออธิบายถึงการทำงานของโปรแกรม MySQL สักเล็กน้อย โปรแกรม MySQL ทำงานเป็นฐานข้อมูลและระบบจัดการฐานข้อมูลบนเครื่องให้บริการ โดยเปิดให้ผู้ใช้งานติดต่อฐานข้อมูลผ่านพอร์ต 3306 บนโพรโตคอล TCP ของเครื่องให้บริการ (ค่าดีฟอลต์ของโปรแกรม) หลังจากที่สั่งให้โปรแกรม MySQL เริ่มต้นทำงานจะเกิดการสร้างเดมอนชื่อ mysqld ไว้รอรับการติดต่อ ซึ่งการใช้งานฐานข้อมูลทำได้ 2 วิธีคือ การเข้าใช้ฐานข้อมูลโดยตรงผ่านโปรแกรม mysql และการใช้งานผ่านโปรแกรมที่เขียนขึ้นเพื่อใช้ติดต่อฐานข้อมูล เช่น โปรแกรมที่ถูกเขียนขึ้นด้วยภาษา PHP เป็นต้น ผู้ที่จะเข้าใช้งานฐานข้อมูลได้จะต้องได้รับการตรวจสอบสิทธิ์และพิสูจน์ตัวตนผู้ใช้ ซึ่งบัญชีรายชื่อผู้ใช้ของโปรแกรม MySQL นี้แยกจากบัญชีผู้ใช้งานของระบบโดยเด็ดขาด ไม่มีความเกี่ยวข้องกันแต่อย่างใด โดยจะถูกจัดเก็บและจัดการผ่านฐานข้อมูลของ MySQL ที่ใช้งาน นอกจากนั้น ผู้ดูแลระบบควรจะสร้างผู้ใช้งานในระบบชื่อ mysql และกลุ่มผู้ใช้ชื่อ mysql มารองรับการทำงานของโปรแกรม MySQL ซึ่งจะอธิบายถึงการนำไปใช้ในลำดับต่อไป

วิธีการสร้างความปลอดภัยให้กับโปรแกรม MySQL ทำได้ในหลายระดับ ซึ่งผู้ดูแลระบบสามารถเลือกนำไปปฏิบัติได้ตามรูปแบบและจุดประสงค์การใช้งาน แบ่งเป็นส่วนๆ ได้ดังนี้

ซึ่งจะได้อธิบายแต่ละหัวข้อโดยละเอียดในลำดับต่อไป

การเริ่มต้นใช้งาน และการเรียกใช้งานโปรแกรม MySQL

หลังจากที่ผู้ดูแลระบบติดตั้งโปรแกรม MySQL แล้ว ผู้ดูแลระบบจะต้องสั่งให้โปรแกรม MySQL สร้างฐานข้อมูลเริ่มต้นโดยใช้คำสั่ง # ./mysql_install_db ทำให้เกิดการสร้างฐานข้อมูล 2 ฐานข้อมูล คือ mysql และ test

การสั่งให้โปรแกรม MySQL เริ่มต้นทำงานทำได้โดยการสั่ง # ./safe_mysqld --user=mysql & (คำสั่ง safe_mysqld อยู่ในไดเรกทอรี /path_to_mysql/bin/) ซึ่งจะทำให้เกิดการสร้างเดมอนชื่อ mysqld ไว้รอรับการติดต่อที่พอร์ต 3306/TCP ของเครื่อง การกำหนดออปชัน --user=mysql เป็นการกำหนดชื่อเจ้าของโพรเซสชนิดเดมอนชื่อ mysqld ที่จะถูกสร้างขึ้น ซึ่งเจ้าของโพรเซสนี้จะต้องได้รับสิทธิ์ในการเข้าใช้งานไฟล์และไดเรกทอรีของฐานข้อมูล หากไม่กำหนดโพรเซสดังกล่าวจะเป็นของผู้ดูแลระบบ ซึ่งทำให้ความปลอดภัยของระบบลดลง

สิ่งแรกที่ผู้ดูแลระบบต้องดำเนินการคือ การกำหนดรหัสผ่านให้กับผู้ดูแลฐานข้อมูล (root) ซึ่งผู้ดูแลฐานข้อมูลนี้จะเป็นผู้จัดการทั้งหมดเกี่ยวกับฐานข้อมูล ได้รับสิทธิ์ให้กระทำการใดๆ ก็ได้กับฐานข้อมูลที่จะมีต่อไป เช่น การสร้างบัญชีชื่อผู้ใช้รายอื่นๆ การสร้างฐานข้อมูลใหม่ และการให้สิทธิ์การใช้งานฐานข้อมูลแก่ผู้ใช้ เป็นต้น เนื่องจากโปรแกรม MySQL ไม่ได้กำหนดค่าดีฟอลต์ของรหัสผ่านของผู้ดูแลฐานข้อมูล นั่นคือ หลังจากที่ติดตั้งโปรแกรม MySQL แล้ว ทันที่ที่สั่งให้โปรแกรม MySQL เริ่มทำงาน ใครก็ได้สามารถติดต่อใช้งานฐานข้อมูลมายังเดมอน mysqld ที่รอรับการติดต่อด้วยสิทธิ์ของผู้ดูแลฐานข้อมูลได้ทันทีโดยไม่ต้องใช้รหัสผ่าน การกำหนดรหัสผ่านของผู้ดูแลฐานข้อมูลทำได้โดยใช้คำสั่ง # ./mysqladmin -u root -h [hostname] -p password 'password ที่ต้องการ' (คำสั่ง mysqladmin อยู่ในไดเรกทอรี /path_to_mysql/bin/)

หลังจากนั้นเมื่อผู้ดูแลฐานข้อมูลเข้าใช้งานฐานข้อมูล จะได้รับข้อความให้ใส่ค่ารหัสผ่านทุกครั้งที่ใช้งานใดๆ เช่น หากผู้ดูแลระบบใช้งานฐานข้อมูลผ่านโปรแกรม mysql จะต้องสั่ง # ./mysql -u root -p และใส่ค่ารหัสผ่าน มิฉะนั้นจะได้รับข้อความเตือนว่า ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) และไม่อนุญาตให้เข้าใช้งาน

ระบบและวิธีการตรวจสอบสิทธิ์ของโปรแกรม MySQL

เนื่องจากโปรแกรม MySQL ให้ความสำคัญกับการจัดการเกี่ยวกับสิทธิ์ของผู้ใช้ค่อนข้างมาก ผู้ดูแลระบบและ/หรือผู้ดูแลฐานข้อมูลจึงควรมีความเข้าใจเกี่ยวกับระบบการทำงานดังกล่าว ซึ่งได้นำมาอธิบายไว้ในหัวข้อนี้ ประโยชน์ของระบบการตรวจสอบสิทธิ์ของโปรแกรม MySQL คือการพิสูจน์ตัวตนผู้ใช้ที่ติดต่อขอใช้งานฐานข้อมูลว่ามาจากเครื่องปลายทางที่ได้รับอนุญาตหรือไม่ และการใช้งานฐานข้อมูลเป็นไปตามสิทธิ์ที่กำหนด เช่น SELECT, INSERT, UPDATE และ DELETE หรือไม่ มีจุดประสงค์เพื่อให้ผู้ดูแลระบบมั่นใจว่าผู้ใช้งานทุกคนดำเนินการใดๆ กับฐานข้อมูลตามที่ได้รับอนุญาตให้ทำเท่านั้น ซึ่งการที่ผู้ใช้งานแต่ละคนจะเข้าใช้งานฐานข้อมูลจะต้องแสดงตัวว่าติดต่อมาจากเครื่องคอมพิวเตอร์เครื่องใดและใช้ชื่อผู้ใช้คนใด

กระบวนการตรวจสอบสิทธิ์ของโปรแกรม MySQL ประกอบด้วยการตรวจสอบ 2 ขั้นตอนเพื่อควบคุมการเข้าถึง คือ

  1. เครื่องให้บริการจะตรวจสอบว่าผู้ใช้ได้รับอนุญาตให้ติดต่อกับฐานข้อมูลหรือไม่
  2. หากได้รับอนุญาต จะตรวจสอบต่อว่าแต่ละคำสั่งที่เรียกใช้งาน เช่น SELECT, INSERT, UPDATE และ DELETE กับออบเจ็กต์ที่ผู้ใช้ต้องการใช้งาน เช่น ฐานข้อมูล ตาราง แถวหรือคอลัมน์ เป็นต้น ตรงกับสิทธิ์ที่ผู้ใช้คนดังกล่าวได้รับอนุญาตให้ใช้งานหรือไม่

จะเห็นได้ว่า การใช้งานฐานข้อมูลจะต้องได้รับการตรวจสอบทั้งในระดับผู้ใช้และสิทธิ์การใช้งานของผู้ใช้แต่ละคน ซึ่งสิทธิ์เหล่านี้ถูกกำหนดโดยผู้ดูแลฐานข้อมูล ดังนั้น การที่ผู้ดูแลฐานข้อมูลจะเพิ่มรายชื่อผู้ใช้งานฐานข้อมูลแต่ละคน ผู้ดูแลฐานข้อมูลจำเป็นจะต้องกำหนดรายละเอียดเหล่านี้ให้ชัดเจน สามารถทำได้ 2 วิธี ดังนี้

  1. ใช้คำสั๋ง GRANT เพื่อกำหนดว่าจะอนุญาตให้ผู้ใช้งานชื่อใดจากเครื่องคอมพิวเตอร์เครื่องใด ติดต่อเข้ามาใช้งานออบเจ็กต์ใดๆ ในฐานข้อมูลได้บ้าง มีรูปแบบคำสั่งดังนี้

GRANT เป็นคำสั่งที่ใช้ในการกำหนดสิทธิ์ของผู้ใช้แต่ละคนที่จะเข้าใช้งานฐานข้อมูล โดยข้อมูลที่ผู้ขอใช้ต้องแสดงต่อฐานข้อมูลคือ ชื่อผู้ใช้และเครื่องปลายทางของ หลังจากที่เดมอน mysqld ตรวจสอบข้อมูลทั้งสองแล้วพบว่าผู้ใช้คนดังกล่าวได้รับสิทธิ์ให้ใช้งานฐานข้อมูล เดมอน mysqld จะเปิดให้ผู้ใช้ส่งคำสั่งต่างๆ มาทำการ SELECT, INSERT, DELETE หรือ UPDATE ข้อมูลในฐานข้อมูล ทุกครั้งที่เดมอน mysqld ได้รับคำสั่งใดๆ จากผู้ใช้ก็จะนำคำสั่งนั้นมาเปรียบเทียบกับข้อมูลสิทธิ์ที่ได้กำหนดไว้ว่าผู้ใช้คนดังกล่าว ได้รับสิทธิ์ในการใช้งานคำสั่งนั้นกับออบเจ็กต์นั้นหรือไม่ คำสั่ง GRANT จะเป็นตัวกำหนดว่า จะอนุญาตให้ผู้ใช้ (user_name) ใช้งานฟิลด์ใด (column_list) ของตาราง (tbl_name) หรือฐานข้อมูลใด (db_name) (อาจอ้างถึงโดยกำหนดเป็น * เพื่อแทนตารางทั้งหมด) ด้วยคำสั่งใดได้บ้าง (priv_type) ส่วนที่เหลือคือออปชันอื่นๆ ที่ผู้ดูแลสามารถปรับใช้งานได้ตามต้องการ

หากผู้ดูแลฐานข้อมูลต้องการยกเลิกการให้สิทธิ์ที่ได้กำหนดไปแล้วด้วยคำสั่ง GRANT สามารถทำได้โดยใช้คำสั่ง REVOKE มีรูปแบบคำสั่งดังนี้

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
  ON {tbl_name | * | *.* | db_name.*}
  FROM user_name [, user_name ...]

วิธีการนี้เป็นวิธีการที่นิยมใช้งานมากกว่าวิธีการที่สองซึ่งจะกล่าวถึงต่อไป เนื่องจากมีความชัดเจนและมีโอกาสเกิดข้อผิดพลาดได้น้อยกว่า ผู้ดูแลระบบและ/หรือผู้ดูแลจึงควรทำความเข้าใจ และนำคำสั่งทั้ง GRANT และ REVOKE นี้ไปใช้งานเพื่อจัดการกับสิทธิ์ของผู้ใช้งานฐานข้อมูล รายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง GRANT และ REVOKE สามารถศึกษาได้จาก MySQL Manual | 4.3.1 GRANT and REVOKE Syntax (http://www.mysql.com/doc/G/R/GRANT.html)

  1. แก้ไขตาราง grant ของโปรแกรม MySQL โดยตรง ทำได้โดยการ INSERT ข้อมูลและสิทธิ์ของผู้ใช้คนใหม่ลงในตาราง user ซึ่งผู้ที่จะแก้ไขตารางนี้ได้คือผู้ดูแลฐานข้อมูล (root ของฐานข้อมูล) เท่านั้น อย่างไรก็ตาม วิธีดังกล่าวนี้มีความยุ่งยากซับซ้อน และต้องอาศัยความรอบคอบของผู้ดูแลฐานข้อมูล จึงไม่นำมาอธิบายในที่นี้ หากต้องการทราบวิธีการสามารถศึกษาได้ที่ MySQL Manual | 4.3.5 Adding New Users to MySQL (http://www.mysql.com/doc/A/d/Adding_users.html)
ไฟล์ล็อกของโปรแกรม mysql

โปรแกรม MySQL มีไฟล์ล็อกที่ใช้เก็บบันทึกเหตุการณ์ที่เกิดอยู่หลายไฟล์ ผู้ดูแลระบบและ/หรือผู้ดูแลฐานข้อมูลควรจะมีความเข้าใจเกี่ยวกับไฟล์เหล่านั้น ว่าไฟล์ใดใช้เก็บค่าล็อกที่มีสาเหตุจากอะไร โดยไฟล์ทั้งหมดถูกเก็บไว้ในไดเรกทอรีที่เก็บไฟล์ฐานข้อมูล เช่น /path_to_mysql/var เป็นต้น
ไฟล์ล็อกดังกล่าวประกอบด้วย

การจัดการกับไฟล์ล็อกของโปรแกรม MySQL มีวิธีการคล้ายคลึงกับไฟล์ล็อกอื่นๆ ผู้ดูแลระบบจะต้องคอยตรวจสอบขนาดของไฟล์ที่เกิดขึ้น และหมุนวนไฟล์ที่ใช้เก็บล็อก สำหรับระบบปฏิบัติการ Red Hat Linux หากผู้ดูแลระบบติดตั้งโปรแกรม MySQL โดยใช้แพ็คเกจชนิด RPM จะทำให้สามารถใช้งานสคริปต์ชื่อ mysql-log-rotate ในการหมุนวนไฟล์ล็อก

การจัดการเกี่ยวกับเจ้าของไฟล์ที่เกี่ยวข้องกับโปรแกรม MySQL ในระบบปฏิบัติการ

สิ่งสำคัญอีกประการหนึ่งเกี่ยวกับการสร้างความปลอดภัยให้กับโปรแกรม MySQL คือการแก้ไขชื่อเจ้าของไฟล์และไดเรกทอรีที่เกี่ยวข้องกับโปรแกรม MySQL ซึ่งตามปกติแล้ว ไฟล์และไดเรกทอรีทั้งหมดจะถูกเก็บไว้ในไดเรกทอรี /path_to_mysql/ ตามที่ผู้ดูแลระบบหรือโปรแกรม MySQL กำหนดในขณะติดตั้ง ประกอบด้วยไดเรกทอรีย่อยที่สำคัญดังต่อไปนี้

ผู้ดูแลระบบควรปรับแก้ชื่อเจ้าของไฟล์และไดเรกทอรีที่เกี่ยวข้อง รวมถึงสิทธิ์การเข้าใช้งานโปรแกรม MySQL ดังนี้

  drwxr-xr-x 12 root mysql 4096 Jul 20 17:48 mysql/
  drwxr-x--- 2 root mysql 4096 Jul 19 14:43 bin/
  drwx------ 4 mysql mysql 4096 Jul 20 18:32 var/

จะเห็นได้ว่าไดเรกทอรีที่เก็บไฟล์ของฐานข้อมูล MySQL ถูกกำหนดให้เป็นของผู้ใช้ในระบบชื่อ mysql และจำกัดสิทธิ์การใช้งานให้เฉพาะผู้ใช้ชื่อ mysql เท่านั้นจึงจะเข้าถึงไฟล์ได้ เพื่อให้ผู้ใช้คนอื่นไม่สามารถดำเนินการใดๆ กับไฟล์เหล่านั้นได้ ยกเว้นผู้ใช้ชื่อ mysql ซึ่งเป็นเจ้าของเดมอน mysqld เท่านั้น

ข้อควรระวังที่เกี่ยวข้องกับความปลอดภัยของโปรแกรม MySQL

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



Home || เอกสารเผยแพร่ || Unix & Linux

ThaiCERT Disclaimer | Copyright © 2001 ThaiCERT(NECTEC). All rights reserved.