- 1 1. บทนำ
- 2 2. วิธีตรวจสอบรายการผู้ใช้ใน MariaDB
- 3 3. การจัดการผู้ใช้ MariaDB อย่างละเอียด
- 4 4. ข้อพิจารณาหลักสำหรับการจัดการผู้ใช้ MariaDB
- 5 5. คำถามที่พบบ่อย (FAQ)
1. บทนำ
MariaDB เป็นหนึ่งในระบบจัดการฐานข้อมูลที่ใช้กันอย่างแพร่หลายที่สุดในปัจจุบัน, มีชื่อเสียงในเรื่องความง่ายในการใช้งานและประสิทธิภาพสูง. ในคุณสมบัติมากมายของมัน, การจัดการผู้ใช้มีบทบาทสำคัญ. ด้วยการจัดการผู้ใช้อย่างเหมาะสม, คุณสามารถรับประกันความปลอดภัยของฐานข้อมูลและบรรลุการดำเนินงานที่มีประสิทธิภาพ.
บทความนี้มุ่งเน้นที่วิธีการตรวจสอบรายการผู้ใช้ใน MariaDB. โดยเฉพาะ, เราจะอธิบายวิธีการดึงรายการผู้ใช้โดยใช้คำสั่ง SQL, ความแตกต่างและข้อได้เปรียบของแต่ละวิธี, รวมถึงการตั้งค่าสิทธิ์ที่เกี่ยวข้องและข้อพิจารณาที่สำคัญ.
คู่มือนี้เขียนขึ้นเพื่อเป็นประโยชน์ไม่เพียงแต่สำหรับผู้เริ่มต้น MariaDB แต่ยังสำหรับผู้ที่กำลังจัดการสภาพแวดล้อมการผลิตอยู่ด้วย. อย่าลืมอ่านจนจบ.
2. วิธีตรวจสอบรายการผู้ใช้ใน MariaDB
มีหลายวิธีในการตรวจสอบรายการผู้ใช้ใน MariaDB. แต่ละวิธีมีลักษณะเฉพาะของตนเอง, และการเลือกวิธีที่เหมาะสมตามวัตถุประสงค์ของคุณจะทำให้การจัดการผู้ใช้มีประสิทธิภาพ. ด้านล่างนี้, เราจะอธิบายสามวิธีที่เป็นตัวแทนอย่างละเอียด.
2.1 การใช้ตาราง mysql.user
วิธีพื้นฐานที่สุดในการตรวจสอบข้อมูลผู้ใช้ใน MariaDB คือการอ้างอิงโดยตรงไปยังตาราง mysql.user. ตารางนี้เก็บข้อมูลบัญชีผู้ใช้ทั้งหมด.
คำสั่งตัวอย่าง
คุณสามารถดูรายการผู้ใช้โดยการรัน SQL ต่อไปนี้:
SELECT Host, User FROM mysql.user;
คำอธิบาย
- Host : แสดงชื่อโฮสต์ที่ผู้ใช้ได้รับอนุญาตให้เชื่อมต่อจาก.
- User : ชื่อผู้ใช้ที่ลงทะเบียนใน MariaDB.
สถานการณ์การใช้งาน
- เมื่อคุณต้องการดูผู้ใช้ทั้งหมดในรายการ.
- เมื่อคุณต้องการตรวจสอบว่าผู้ใช้ใดสามารถเชื่อมต่อจากโฮสต์เฉพาะได้.
หมายเหตุสำคัญ
- คุณต้องมีสิทธิ์ที่เพียงพอ (โดยทั่วไปคือสิทธิ์
root) เพื่ออ้างอิงตารางmysql.user. - ในบางเวอร์ชัน, การใช้
mysql.userโดยตรงอาจไม่แนะนำ. ควรตรวจสอบเอกสารอย่างเป็นทางการสำหรับเวอร์ชันของคุณเสมอ.
2.2 การใช้คำสั่ง SHOW GRANTS
คุณสามารถใช้คำสั่ง SHOW GRANTS เพื่อตรวจสอบสิทธิ์ที่มอบให้กับผู้ใช้เฉพาะ.
คำสั่งตัวอย่าง
ระบุผู้ใช้ตามที่แสดงด้านล่างเพื่อแสดงสิทธิ์ของพวกเขา:
SHOW GRANTS FOR 'username'@'hostname';
คำอธิบาย
- คุณสามารถตรวจสอบสิทธิ์โดยละเอียดสำหรับแต่ละผู้ใช้.
- ตัวอย่างผลลัพธ์:
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
สถานการณ์การใช้งาน
- เมื่อคุณต้องการตรวจสอบว่าการตั้งค่าสิทธิ์ของผู้ใช้ถูกต้องหรือไม่.
- เมื่อแก้ไขปัญหาที่เกิดจากการกำหนดค่าสิทธิ์ที่ไม่ถูกต้อง.
หมายเหตุสำคัญ
- หากคุณไม่มีสิทธิ์ที่เพียงพอ, คุณจะไม่สามารถรันคำสั่งนี้ได้.
2.3 การใช้ information_schema.USER_PRIVILEGES
MariaDB มีฐานข้อมูลระบบชื่อ information_schema. โดยการสืบค้นตาราง USER_PRIVILEGES ภายใน, คุณสามารถแสดงข้อมูลสิทธิ์ของผู้ใช้ทั้งหมด.
คำสั่งตัวอย่าง
SELECT * FROM information_schema.USER_PRIVILEGES;
คำอธิบาย
- วิธีนี้ทำให้คุณสามารถตรวจสอบสิทธิ์ระดับโลกสำหรับแต่ละผู้ใช้.
- ผลลัพธ์รวมถึงข้อมูลเช่น:
- GRANTEE : ชื่อผู้ใช้และชื่อโฮสต์.
- PRIVILEGE_TYPE : ประเภทของสิทธิ์ที่มอบให้.
- IS_GRANTABLE : ว่าสิทธิ์นั้นสามารถมอบให้ผู้อื่นได้หรือไม่.
สถานการณ์การใช้งาน
- เมื่อคุณต้องการตรวจสอบสิทธิ์ของผู้ใช้หลายคนพร้อมกัน.
- เมื่อทำการตรวจสอบการตั้งค่าสิทธิ์ระดับโลก.
หมายเหตุสำคัญ
- สิทธิ์บางอย่างอาจไม่แสดงอย่างเต็มที่ในตารางนี้.
สรุป
โดยการใช้วิธีเหล่านี้อย่างเหมาะสม, คุณสามารถจัดการบัญชีผู้ใช้และข้อมูลสิทธิ์ของ MariaDB ได้อย่างมีประสิทธิภาพ. แต่ละวิธีมีจุดแข็งของตนเอง, ดังนั้นการเลือกวิธีที่เหมาะสมตามวัตถุประสงค์เฉพาะของคุณจึงเป็นสิ่งสำคัญ.

3. การจัดการผู้ใช้ MariaDB อย่างละเอียด
MariaDB อนุญาตให้คุณตรวจสอบข้อมูลผู้ใช้โดยละเอียดและจัดการสิทธิ์ได้อย่างมีประสิทธิภาพ. ในส่วนนี้, เราจะอธิบายการดำเนินการที่จำเป็นสำหรับการจัดการผู้ใช้ที่เหมาะสม.
3.1 การตรวจสอบข้อมูลผู้ใช้
ใน MariaDB คุณสามารถใช้คำสั่ง SHOW CREATE USER เพื่อตรวจสอบข้อมูลโดยละเอียดเกี่ยวกับผู้ใช้เฉพาะ คำสั่งนี้จะคัดลอกประโยคที่ใช้เมื่อสร้างผู้ใช้
ตัวอย่างคำสั่ง
รัน SQL ต่อไปนี้เพื่อแสดงข้อมูลโดยละเอียดเกี่ยวกับผู้ใช้ที่ระบุ:
SHOW CREATE USER 'username'@'hostname';
คำอธิบาย
คำสั่งนี้ใช้เพื่อตรวจสอบวิธีการรับรองตัวตนของผู้ใช้และคุณสมบัติอื่นๆ ตัวอย่างผลลัพธ์:
CREATE USER 'user1'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';
สถานการณ์การใช้งาน
- เมื่อคุณต้องการยืนยันวิธีการรับรองตัวตนของผู้ใช้
- เมื่อตรวจสอบคุณสมบัติของผู้ใช้เพื่อหาปัญหาที่อาจเกิดขึ้น
ข้อควรระวัง
- ต้องมีสิทธิ์ที่เหมาะสมเพื่อรันคำสั่งนี้ (โดยทั่วไปคือสิทธิ์
root)
3.2 การตั้งค่าและแก้ไขสิทธิ์ผู้ใช้
MariaDB อนุญาตให้กำหนดค่าสิทธิ์ได้อย่างยืดหยุ่นสำหรับผู้ใช้แต่ละคน คุณสามารถใช้คำสั่ง GRANT และ REVOKE เพื่อจัดการสิทธิ์
การมอบสิทธิ์
SQL ต่อไปนี้มอบสิทธิ์เฉพาะแก่ผู้ใช้ที่กำหนด:
GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';
การเพิกถอนสิทธิ์
เพื่อลบสิทธิ์ที่ไม่จำเป็น ใช้คำสั่ง REVOKE:
REVOKE INSERT ON database_name.* FROM 'username'@'hostname';
คำอธิบาย
- คำสั่ง
GRANTมอบสิทธิ์การดำเนินการสำหรับฐานข้อมูลหรือตารางเฉพาะ - คำสั่ง
REVOKEลบสิทธิ์ที่ไม่จำเป็นอีกต่อไป
สถานการณ์การใช้งาน
- เมื่อกำหนดสิทธิ์สำหรับผู้ใช้ใหม่
- เมื่อลบสิทธิ์ที่ไม่จำเป็นเพื่อเพิ่มความปลอดภัย
ข้อควรระวัง
- การกำหนดค่าสิทธิ์ที่ไม่ถูกต้องอาจเพิ่มความเสี่ยงด้านความปลอดภัย ดังนั้นให้ดำเนินการอย่างระมัดระวัง
3.3 การลบผู้ใช้
การลบผู้ใช้ที่ไม่จำเป็นจะช่วยเพิ่มความปลอดภัยของฐานข้อมูล ใช้คำสั่ง DROP USER เพื่อลบผู้ใช้
ตัวอย่างคำสั่ง
รัน SQL ต่อไปนี้เพื่อลบผู้ใช้ที่ระบุ:
DROP USER 'username'@'hostname';
คำอธิบาย
- เมื่อลบผู้ใช้ สิทธิ์ทั้งหมดที่มอบให้ผู้ใช้นั้นจะถูกลบพร้อมกัน
- หากสำเร็จ MariaDB จะแสดงข้อความ “Query OK”
สถานการณ์การใช้งาน
- เมื่อลบผู้ใช้ที่ไม่จำเป็นออกจากฐานข้อมูลอย่างถาวร
- เมื่อทำความสะอาดบัญชีที่ไม่ได้ใช้เพื่อวัตถุประสงค์ด้านความปลอดภัย
ข้อควรระวัง
- หากผู้ใช้กำลังเชื่อมต่ออยู่ อาจเกิดข้อผิดพลาดที่ไม่คาดคิด
- การลบผู้ใช้ไม่สามารถย้อนกลับได้ ดังนั้นให้ยืนยันอย่างรอบคอบก่อนรัน
สรุป
การจัดการผู้ใช้ที่เหมาะสมใน MariaDB เป็นสิ่งสำคัญสำหรับการปรับปรุงทั้งความปลอดภัยและประสิทธิภาพการทำงาน โดยการตรวจสอบข้อมูลผู้ใช้ กำหนดค่าและแก้ไขสิทธิ์ และลบผู้ใช้ที่ไม่จำเป็น คุณสามารถรักษาสภาพแวดล้อมฐานข้อมูลที่ปลอดภัยและมีประสิทธิภาพ

4. ข้อพิจารณาหลักสำหรับการจัดการผู้ใช้ MariaDB
เพื่อจัดการผู้ใช้ MariaDB อย่างถูกต้อง คุณต้องใส่ใจกับจุดสำคัญหลายประการ ส่วนนี้จะอธิบายวิธีจัดการสิทธิ์ที่ไม่เพียงพอ ข้อพิจารณาด้านความปลอดภัยหลัก และความแตกต่างระหว่างเวอร์ชัน
4.1 วิธีจัดการสิทธิ์ที่ไม่เพียงพอ
การตรวจสอบรายการผู้ใช้หรือสิทธิ์ใน MariaDB ต้องใช้สิทธิ์ที่เพียงพอ หากการดำเนินการล้มเหลวเนื่องจากสิทธิ์ไม่เพียงพอ คุณสามารถลองใช้วิธีต่อไปนี้
ตัวอย่างข้อผิดพลาด
คุณอาจเห็นข้อผิดพลาดเช่นต่อไปนี้:
ERROR 1045 (28000): Access denied for user 'user1'@'localhost'
วิธีแก้ไข
- ยืนยันว่าคุณเข้าสู่ระบบในฐานะผู้ใช้ที่ถูกต้อง
- หากสิทธิ์ที่จำเป็น (ตัวอย่างเช่น สิทธิ์
SELECT) หายไป คุณอาจไม่สามารถคิวรีตารางmysql.user - เป็นวิธีแก้ปัญหาชั่วคราว ลองเข้าสู่ระบบในฐานะผู้ใช้ root และทำซ้ำการดำเนินการ
- เข้าสู่ระบบในฐานะผู้ใช้ root
- การเข้าสู่ระบบในฐานะ root ช่วยให้ทำการดำเนินการบริหารส่วนใหญ่ได้:
bash mysql -u root -p
- กำหนดค่าสิทธิ์ใหม่
- มอบสิทธิ์ที่จำเป็นหากต้องการ:
sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES;
หมายเหตุสำคัญ
- หลีกเลี่ยงการมอบสิทธิ์มากเกินความจำเป็น สิทธิ์ที่มากเกินไปจะเพิ่มความเสี่ยงด้านความปลอดภัย
4.2 แนวปฏิบัติที่ดีที่สุดด้านความปลอดภัย
ความปลอดภัยควรเป็นลำดับความสำคัญสูงสุดในการจัดการผู้ใช้ MariaDB ด้านล่างนี้คือประเด็นสำคัญที่ควรจำไว้
ลบผู้ใช้ที่ไม่ได้ใช้งาน
- การปล่อยให้บัญชีผู้ใช้ที่ไม่ได้ใช้งานไว้ อาจทำให้พวกมันเป็นเป้าหมายที่เป็นไปได้สำหรับผู้โจมตี
- ทบทวนผู้ใช้เป็นประจำและลบรายการที่ไม่จำเป็น:
DROP USER 'username'@'hostname';
ใช้หลักการรหัสผ่านที่แข็งแกร่ง
- เมื่อสร้างผู้ใช้ ให้ตั้งรหัสผ่านที่ยากต่อการเดา:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'StrongPassword123!';
จำกัดการเข้าถึงจากภายนอก
- จำกัดโฮสต์ที่สามารถเชื่อมต่อได้เพื่อป้องกันการเข้าถึงจากภายนอกที่ไม่จำเป็น:
CREATE USER 'user1'@'192.168.0.1' IDENTIFIED BY 'password';
ติดตามบันทึก
- ทบทวนบันทึกของ MariaDB เป็นประจำ (ตัวอย่างเช่น
general_logและerror_log) เพื่อตรวจจับการเข้าถึงที่น่าสงสัย
4.3 ความแตกต่างระหว่างเวอร์ชันของ MariaDB
พฤติกรรมของ MariaDB และแนวปฏิบัติที่แนะนำอาจแตกต่างกันตามเวอร์ชัน ดังนั้นคุณควรปรับแนวทางของคุณให้เหมาะสม
การเลิกใช้การเข้าถึง mysql.user โดยตรง
- ในเวอร์ชันใหม่ การคิวรีตาราง
mysql.userโดยตรงอาจไม่ได้รับการสนับสนุน ในกรณีนั้น ให้ใช้SHOW GRANTSหรือinformation_schemaแทน
ปลั๊กอินการยืนยันตัวตน
- ขึ้นอยู่กับเวอร์ชัน ปลั๊กอินการยืนยันตัวตนเริ่มต้นอาจแตกต่างกัน เวอร์ชันเก่ามักใช้
mysql_native_passwordในขณะที่เวอร์ชันใหม่กว่าอาจแนะนำตัวเลือกที่ปลอดภัยกว่าสำหรับcaching_sha2_password
ขั้นตอนที่แนะนำ
- ตรวจสอบเวอร์ชันของ MariaDB ของคุณ:
SELECT VERSION();
- อ้างอิงเอกสารอย่างเป็นทางการสำหรับเวอร์ชันของคุณและปฏิบัติตามแนวปฏิบัติที่ดีที่สุดล่าสุด
สรุป
โดยการทำความเข้าใจข้อพิจารณาหลักเหล่านี้สำหรับการจัดการผู้ใช้ MariaDB คุณสามารถเสริมสร้างความปลอดภัยและปรับปรุงประสิทธิภาพการทำงานได้ สนใจปัญหาสิทธิ์และความแตกต่างเฉพาะเวอร์ชัน และนำมาตรการความปลอดภัยที่ทันสมัยมาใช้
5. คำถามที่พบบ่อย (FAQ)
ด้านล่างนี้คือคำถามและคำตอบทั่วไปที่เกี่ยวข้องกับการจัดการผู้ใช้ MariaDB ส่วนนี้ครอบคลุมการกำหนดค่าสิทธิ์ การจัดการข้อผิดพลาด และปัญหาผู้ใช้ root ที่ผู้ดูแลระบบมักพบ
Q1: ฉันสามารถมอบสิทธิ์เฉพาะให้กับผู้ใช้เฉพาะได้อย่างไร?
คำตอบ
คุณสามารถใช้คำสั่ง GRANT เพื่อมอบสิทธิ์ที่จำเป็นเท่านั้นให้กับผู้ใช้เฉพาะ ด้านล่างนี้คือตัวอย่างที่มอบสิทธิ์ SELECT และ INSERT บนฐานข้อมูลเฉพาะ:
GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;
ประเด็นสำคัญ
- โดยการระบุ
database_name.*สิทธิ์จะใช้กับตารางทั้งหมดในฐานข้อมูลนั้น - รัน
FLUSH PRIVILEGES;เพื่อให้แน่ใจว่าการเปลี่ยนแปลงมีผล
Q2: สาเหตุและวิธีแก้ไขเมื่อรายการผู้ใช้ไม่แสดงขึ้นคืออะไร?
คำตอบ
หากคุณไม่สามารถดูรายการผู้ใช้ได้ สาเหตุต่อไปนี้เป็นเรื่องทั่วไป
- สิทธิ์ไม่เพียงพอ
- หากขาดสิทธิ์ที่จำเป็น (ตัวอย่างเช่น สิทธิ์
SELECT) คุณอาจไม่สามารถคิวรีตารางmysql.userได้ - ในฐานะวิธีแก้ปัญหา ลองเข้าสู่ระบบในฐานะผู้ใช้ root และทำซ้ำการดำเนินการ
- ใช้คำสั่งที่ถูกต้อง
- ในเวอร์ชันใหม่ของ MariaDB
mysql.userอาจไม่ได้รับการสนับสนุน ในกรณีนั้น ให้ใช้คำสั่งต่อไปนี้แทน:SELECT User, Host FROM information_schema.USER_PRIVILEGES;
- ตรวจสอบเวอร์ชันของ MariaDB ของคุณ
- เนื่องจากวิธีที่แนะนำอาจแตกต่างกันตามเวอร์ชัน ให้ตรวจสอบเวอร์ชันปัจจุบันของคุณก่อน:
SELECT VERSION();
Q3: ฉันควรทำอย่างไรหากผู้ใช้ root ถูกล็อก?
คำตอบ
หากผู้ใช้ root ถูกล็อกและคุณไม่สามารถเข้าสู่ระบบได้ ให้ทำตามขั้นตอนเหล่านี้
- เริ่ม MariaDB ในโหมดปลอดภัย
- หยุดเซิร์ฟเวอร์และเริ่มใหม่ในโหมดปลอดภัย:
bash mysqld_safe --skip-grant-tables &
- รีเซ็ตรหัสผ่านของ root
- เข้าสู่ระบบ MariaDB ในโหมดปลอดภัย แล้วรีเซ็ตรหัสผ่าน root ด้วยคำสั่งต่อไปนี้:
UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
- ออกจากโหมดปลอดภัยและรีสตาร์ทโดยปกติ
- รีสตาร์ท MariaDB และกลับสู่การทำงานปกติ.
หมายเหตุสำคัญ
เนื่องจากการตรวจสอบสิทธิ์ถูกข้ามในโหมดปลอดภัย จึงต้องแน่ใจว่าไม่มีบุคคลภายนอกเข้าถึงเซิร์ฟเวอร์ในช่วงเวลานี้.
Q4: ฉันได้รับข้อผิดพลาดเมื่อพยายามลบผู้ใช้ ควรทำอย่างไร?
คำตอบ
หากคุณพบข้อผิดพลาดขณะลบผู้ใช้ สาเหตุที่พบบ่อยมีดังต่อไปนี้.
- ผู้ใช้ที่คุณพยายามลบกำลังถูกใช้งานอยู่
- หากผู้ใช้กำลังเชื่อมต่ออยู่ การลบอาจล้มเหลว.
- วิธีแก้ไขคือบังคับตัดการเชื่อมต่อของผู้ใช้:
SHOW PROCESSLIST; KILL connection_id;
- มีวัตถุที่ขึ้นอยู่กับผู้ใช้
- หากมีวัตถุที่เชื่อมโยงกับผู้ใช้ (เช่น view หรือ stored procedure) คุณอาจต้องลบสิ่งเหล่านั้นก่อน.
Q5: ฉันจะบันทึกผลลัพธ์ของ SHOW GRANTS อย่างไร?
คำตอบ
คุณสามารถบันทึกผลลัพธ์ของ SHOW GRANTS ลงไฟล์เพื่อการตรวจสอบในภายหลังได้.
- บันทึกลงไฟล์
- ใช้ไคลเอนต์
mysqlในบรรทัดคำสั่งและเปลี่ยนทิศทางผลลัพธ์:bash mysql -u root -p -e "SHOW GRANTS FOR 'username'@'hostname';" > grants_output.txt
- บันทึกเป็นคำสั่ง SQL
- บันทึกผลลัพธ์ลงไฟล์ข้อความเพื่อให้คุณสามารถนำกลับมาใช้ใหม่ได้ในภายหลัง.
สรุป
ในส่วน FAQ นี้ เราได้ตอบคำถามทั่วไปที่มักเกิดขึ้นในการจัดการผู้ใช้ MariaDB ใช้คำตอบเหล่านี้เพื่อแก้ไขปัญหาและเพิ่มประสิทธิภาพการดำเนินงานของคุณ.


