คุณลักษณะเฉพาะของ MySQL คือการรักษาความปลอดภัยของตัวเอง โดยอาศัยการป้องกันจากภายนอก ในฐานะที่เป็นระบบจัดการฐานข้อมูลที่ทันสมัย ครบครัน และมีประสิทธิภาพ MySQL มีเครื่องมือของตัวเองสำหรับจัดการผู้ใช้และการเข้าถึงทรัพยากรที่ควบคุม
หากคุณไม่รู้ชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง การเข้าถึงฐานข้อมูลผ่าน MySQL นั้นยากมาก
ในโหมดโฮสต์ปกติ แค่นี้ก็เพียงพอแล้ว สถานการณ์ที่ไม่คาดฝัน การโจมตีของแฮ็กเกอร์ และปัญหาอื่นๆ เป็นเรื่องของการดูแลระบบภายนอกและบริการรักษาความปลอดภัย แนวคิดนี้กลายเป็นแบบดั้งเดิมและไม่มีการพูดคุยกันในทางปฏิบัติ
ติดตั้งเซิร์ฟเวอร์ MySQL และรูทผู้ใช้
ไม่ว่าจะติดตั้งระบบจัดการฐานข้อมูลในสภาพแวดล้อมการทำงานใดก็ตาม จะต้องมีผู้ใช้อย่างน้อยหนึ่งคนเสมอ: รูท ติดตั้ง MySQL สร้างผู้ใช้ที่มีสิทธิ์รูททั้งหมด - หากไม่มีสิ่งนี้ ทำงานกับเซิร์ฟเวอร์ไม่สามารถทำได้ สิทธิ์ของผู้ใช้รายนี้เพียงพอที่จะ:
- สร้างและจัดการผู้ใช้ใหม่;
- สร้างและจัดการฐานข้อมูล
โดยพื้นฐานแล้วผู้ใช้ที่ "ไม่มีรหัสผ่าน" จะมีอยู่ใน MySQL แต่นี่เป็นสิ่งที่ยอมรับไม่ได้
ฝึกทั่วไป:
- เซิร์ฟเวอร์ที่ติดตั้งบนคอมพิวเตอร์ของตัวเอง ซึ่งสามารถติดตั้งโฮสต์ได้ (ตัวเลือกในเครื่อง);
- เซิร์ฟเวอร์อยู่ในโฮสต์สาธารณะบนอินเทอร์เน็ต
ในกรณีแรก เป็นไปได้ที่จะทำงานกับเซิร์ฟเวอร์จากบรรทัดคำสั่งและใช้ phpMyAdmin ในกรณีที่สอง เฉพาะ phpMyAdmin หรือเครื่องมือที่คล้ายกัน แต่สามารถเข้าถึงบรรทัดคำสั่งผ่านการเข้าถึง SSH ระยะไกล
เครื่องมือดูแลระบบเอง
ความรู้สึกเป็นเครือญาติกับตระกูล Unixoid และกับอดีตจากเซิร์ฟเวอร์ Apache เป็นจุดเด่นของ MySQL: create user เป็นบรรทัดคำสั่งที่มีไวยากรณ์แปลก ๆ สำหรับมืออาชีพที่ทำงานกับ Linux และระบบที่คล้ายคลึงกัน สิ่งนี้คุ้นเคยพอๆ กับที่ดูไม่เป็นธรรมชาติในสายตาผู้ใช้ Windows ที่ไม่เคย “เข้าสู่ชีวิตจริง”
การสร้างผู้ใช้เริ่มต้นด้วยการเริ่มต้นบรรทัดคำสั่งของเซิร์ฟเวอร์ ในสภาพแวดล้อม Windows ทำได้ดังนี้
ขั้นแรก (1) คุณต้องเรียกใช้บรรทัดคำสั่งในฐานะผู้ดูแลระบบ จากนั้นไปที่โฟลเดอร์ที่ MySQL ตั้งอยู่ (2) จากนั้นเริ่มเซิร์ฟเวอร์เอง (3):
mysql -u… -p
ที่นี่ "-u…" และ "-p" คือคีย์ที่ชี้ไปที่ชื่อ "…"=รูท (หรือชื่ออื่น) และรหัสผ่าน โดยหลักการแล้ว ผู้ใช้อาจไม่ใช่รูท แต่มีผู้ใช้ที่มีสิทธิ์ "รูท" (ผู้ดูแลระบบ)
สำคัญ: จริงๆ แล้วเซิร์ฟเวอร์ทำงานอยู่เสมอ ที่นี่ mysql -u… -p คือคำสั่งในการเข้าถึงเซิร์ฟเวอร์ ไม่ใช่เริ่ม
ในสภาพแวดล้อม Linux และระบบที่คล้ายกัน คำสั่งดังกล่าวเป็นการกระทำ "ดั้งเดิม" และตามกฎแล้ว ถูกกำหนดโดยเพียงแค่เริ่มต้น mysqld ในตำแหน่งที่ถูกต้อง (ในเส้นทางที่ถูกต้อง) สิ่งนี้ควรตรวจสอบด้วย ผู้ดูแลระบบ โดยปกติจะมีชื่ออื่นที่นี่: ไม่ใช่ mysql แต่เป็น mysqld นอกจากนี้ การดำเนินการนี้อาจไม่พร้อมใช้งานสำหรับผู้ใช้ทุกคน (ของระบบปฏิบัติการ ไม่ใช่ของเซิร์ฟเวอร์ MySQL) ต่างจาก Windows ใน Linuxoids ระเบียบและความปลอดภัยเป็นข้อกำหนดตามธรรมชาติและไม่สามารถต่อรองได้ ซึ่งได้รับการปฏิบัติอย่างมีอารยะเสมอ
ไม่ว่าในกรณีใด เมื่อ mysql เริ่มต้นขึ้น มันจะประกาศสิ่งนี้ด้วยข้อความแจ้ง (4):
mysql>
และจะสามารถทำงานกับทั้งผู้ใช้และฐานข้อมูล
หมายเหตุ. เมื่อติดตั้งในสภาพแวดล้อม Windows ทุกอย่าง: Apache, MySQL, PHP, phpMyAdmin สามารถตั้งค่าเป็นพาธเริ่มต้นได้ แต่ขอแนะนำให้ใช้ตำแหน่งที่กะทัดรัดและใกล้กว่าสำหรับเครื่องมือสำคัญเหล่านี้:
- c:\SCiA\Apache;
- c:\SCiA\PHP;
- c:\SCiA\MySQL;
- …
- c:\SCiB\localhost\www\phpMyAdmin;
- c:\SCiB\site1\www;
- c:\SCiB\site2\www;
- …
- c:\SCiB\siteN\www\.
ตรรกะนี้ไม่เพียงทำให้การดูแลระบบง่ายขึ้น แต่ยังขยายความสามารถของนักพัฒนาในการย้ายไปมาระหว่างเวอร์ชันของผลิตภัณฑ์และจัดการฟังก์ชันการทำงานด้วย
ทำงานบนบรรทัดคำสั่ง MySQL
เมื่อเซิร์ฟเวอร์ตอบกลับและระบุบรรทัดคำสั่ง ผู้ใช้จะสามารถสร้างและกำหนดสิทธิ์อนุญาตได้
ในตัวอย่างนี้ คำสั่ง create user ได้สร้างผู้ใช้ Petrov ด้วยรหัสผ่าน 123DFG หากเกิดข้อผิดพลาดขณะป้อนคำสั่ง เซิร์ฟเวอร์เสนอให้แก้ไข แต่จะดีกว่าที่จะไม่ทำผิดพลาดเมื่อทำงานบนบรรทัดคำสั่ง!
คำสั่งต่อไปนี้ให้สิทธิ์ทั้งหมดให้สิทธิ์ทุกอย่าง คำสั่ง flush สามารถละเว้นได้ แต่มัน 'แสดง' บัฟเฟอร์ของคำสั่ง นั่นคือจะแก้ไขการทำงาน
MySQL: สร้างผู้ใช้และให้สิทธิ์ในฐานข้อมูล
คำสั่งที่ใช้ในตัวอย่าง:
ให้สิทธิ์ทั้งหมดบน. ถึง 'Petrov'@'localhost';
ให้สิทธิ์ผู้ใช้ Petrov เข้าถึงฐานข้อมูลทั้งหมด (ดอกจันแรก) กับตารางทั้งหมด (ดอกจันที่สอง)
ตามกฎของ MySQL การสร้างผู้ใช้คือ:
GRANT [ประเภทสิทธิพิเศษ] บน [ชื่อฐานข้อมูล].[ชื่อตาราง] ถึง '[ผู้ใช้]'@'localhost';
อนุญาตสิทธิ์ดังต่อไปนี้:
- ALL PRIVILEGES - all rights.
- CREATE - สิทธิ์สร้างตาราง/ฐานข้อมูลใหม่
- DROP - สิทธิ์ในการวางตาราง/ฐานข้อมูล
- DELETE - สิทธิ์ในการลบข้อมูลในตาราง
- INSERT - สิทธิ์ในการเขียนข้อมูลลงตาราง
- SELECT - สิทธิ์ในการอ่านข้อมูลจากตาราง
- UPDATE - สิทธิ์ในการอัปเดตข้อมูลในตาราง
- GRANT OPTION - สิทธิ์ในการทำงานกับสิทธิพิเศษของผู้ใช้รายอื่น
จากมุมมองที่ใช้งานได้จริง ใน MySQL "สร้างผู้ใช้" หมายถึงสามตัวเลือกสำหรับสิทธิ์:
- สิทธิ์ในฐานข้อมูลและผู้ใช้ทั้งหมด;
- อ่านเขียน
- อ่านอย่างเดียว
ตัวเลือกอื่นๆ สำหรับการให้สิทธิ์นั้นแทบไม่มีความจำเป็น ในสภาพแวดล้อม Linux มีเหตุผลมากขึ้นสำหรับเสรีภาพ "ทางกฎหมาย" (และความจำเป็น) แต่มีโอกาสมากกว่าใน Windows
การดำเนินการย้อนกลับของ MySQL "สร้างผู้ใช้" ลดลง
วางผู้ใช้ 'Petrov'@'localhost';
หลังจากดำเนินการคำสั่งนี้ Petrov จะไม่เป็นผู้ใช้อีกต่อไปและสิทธิ์ของเขาจะหายไป หากต้องการเปลี่ยนสิทธิ์ให้ใช้คำสั่ง:
REVOKE [สิทธิพิเศษ] บน [DB].[Table] ถึง '[user]'@'localhost';
การดำเนินการตามปกติใน MySQL คือการสร้างผู้ใช้หรือลบผู้ใช้นั้น แต่การเปลี่ยนแปลงสิทธิ์ก็เป็นการดำเนินการที่ถูกต้องเช่นกัน (ไม่ค่อยมีการร้องขอ)
ใช้ phpMyAdmin
มีการใช้งานเครื่องมือที่ยอดเยี่ยมนี้มากมาย ขึ้นอยู่กับเวอร์ชันของ Apache, PHP และ MySQL ที่ใช้ มักใช้เวลานานในการค้นหาเวอร์ชันที่ถูกต้องของผลิตภัณฑ์นี้ แต่เมื่อติดตั้ง phpMyAdmin สำเร็จแล้ว ผู้ใช้จะมีคุณสมบัติที่สะดวกมากมายและความสะดวกสบายอินเทอร์เฟซ
การใช้ phpMyAdmin คุณสามารถบอกให้ MySQL สร้างผู้ใช้สำหรับโฮสต์ใดๆ และจัดการผู้ใช้ที่มีอยู่ด้วยวิธีที่แทบจะเป็นไปไม่ได้
phpMyAdmin ไม่ได้เป็นเพียงเครื่องมือเดียวที่มีอินเทอร์เฟซที่สะดวกสบาย ใช้งานง่าย และเต็มไปด้วยฟีเจอร์ แต่เป็นเครื่องมือยอดนิยมสำหรับการจัดการเซิร์ฟเวอร์ MySQL
เกี่ยวกับบรรทัดคำสั่งและความปลอดภัย
แน่นอน การใช้บรรทัดคำสั่ง MySQL เป็นแบบฝึกหัดที่ไม่น่าสนใจ แต่ควรระลึกไว้เสมอว่าในบางกรณี มีเพียงบรรทัดคำสั่งของเซิร์ฟเวอร์เท่านั้นที่สามารถบันทึกฐานข้อมูลหรือผู้ใช้ ตรวจสอบให้แน่ใจว่าได้นำเข้าหรือส่งออกข้อมูล
เวอร์ชันซอฟต์แวร์มีการพัฒนาอย่างรวดเร็วจนนักพัฒนาไม่มีเวลารวมคุณลักษณะต่างๆ เช่น PHP และ MySQL, MySQL และ phpMyAdmin หากมีสิ่งใดเกิดขึ้น บรรทัดคำสั่งจะบันทึกวันนั้นเสมอ
สิ่งหนึ่งที่ไม่ควรลืม: การดูแลระบบ MySQL เป็นเพียงการเข้าถึงฐานข้อมูลและผ่านฟังก์ชันการทำงานเท่านั้น ไฟล์ฐานข้อมูลเปิดให้เข้าถึงภายนอก MySQL การรักษาความปลอดภัย MySQL จากภายนอกและทรัพยากรที่ควบคุมนั้นเป็นความต้องการที่แท้จริงและสำคัญ