- 1 1. วิธีตรวจสอบรหัสผ่าน Root ของ MySQL
- 2 2. วิธีเปลี่ยนรหัสผ่าน Root ของ MySQL
- 3 3. วิธีทำเมื่อคุณลืมรหัสผ่าน Root
- 4 4. แนวปฏิบัติที่ดีที่สุดเพื่อเสริมความปลอดภัยของ MySQL
- 5 5. คำถามที่พบบ่อย (FAQ)
- 5.1 Q1. ฉันไม่พบรหัสผ่าน MySQL เริ่มต้นในบันทึก ควรทำอย่างไร?
- 5.2 Q2. ผู้ใช้ที่ไม่ใช่ root สามารถเปลี่ยนรหัสผ่านของตนโดยใช้ขั้นตอนเดียวกันได้หรือไม่?
- 5.3 Q3. ไม่พบคำสั่ง mysqld_safe ควรทำอย่างไร?
- 5.4 Q4. ฉันเปลี่ยนรหัสผ่านแล้วแต่ยังเข้าสู่ระบบไม่ได้ ทำไม?
- 5.5 Q5. มีวิธีใดที่จะเสริมความปลอดภัย MySQL ทั้งหมดในครั้งเดียวหรือไม่?
- 5.6 Q6. การจัดการรหัสผ่านแตกต่างกันตามเวอร์ชันของ MySQL หรือไม่?
- 5.7 Q7. ฉันจะอนุญาตการเชื่อมต่อระยะไกลสำหรับผู้ใช้ root ได้อย่างไร?
- 5.8 Q8. คุณสามารถอธิบายขั้นตอนการรีเซ็ตรหัสผ่าน root อย่างสั้นได้หรือไม่?
1. วิธีตรวจสอบรหัสผ่าน Root ของ MySQL
รหัสผ่าน root ของ MySQL เป็นองค์ประกอบสำคัญในการจัดการฐานข้อมูล อย่างไรก็ตาม โดยเฉพาะสำหรับผู้เริ่มต้น คุณอาจสงสัยว่า “ฉันไม่รู้รหัสผ่าน” หรือ “จะหารหัสผ่านเริ่มต้นได้จากที่ไหน?” ในส่วนนี้เราจะอธิบายวิธีการเฉพาะเพื่อตรวจสอบรหัสผ่าน root ของ MySQL
วิธีตรวจสอบรหัสผ่านเริ่มต้น
ใน MySQL 5.7 และรุ่นต่อไป รหัสผ่านเริ่มต้นสำหรับผู้ใช้ root จะถูกสร้างอัตโนมัติและบันทึกไว้ในไฟล์บันทึกระหว่างการติดตั้ง ทำตามขั้นตอนด้านล่างเพื่อดูรหัสผ่านชั่วคราวนี้
ขั้นตอน
- เปิดเทอร์มินัล (หรือ Command Prompt) เพื่อตรวจสอบไฟล์บันทึกของ MySQL
- รันคำสั่งต่อไปนี้:
sudo grep 'temporary password' /var/log/mysqld.log
- ผลลัพธ์จะมีข้อความคล้ายกับต่อไปนี้:
[Note] A temporary password is generated for root@localhost: EaGapdplN0*m
- ในกรณีนี้
EaGapdplN0*mคือรหัสผ่านเริ่มต้นสำหรับผู้ใช้ root
หมายเหตุสำคัญ
- รหัสผ่านชั่วคราวสามารถใช้ได้เพียงครั้งเดียว หลังจากเข้าสู่ระบบแล้ว คุณต้องเปลี่ยนรหัสผ่านทันที
- หากไม่พบไฟล์บันทึกหรือเจอข้อผิดพลาดเรื่องสิทธิ์ ให้รันคำสั่งด้วยสิทธิ์ผู้ดูแลระบบ
วิธีตรวจสอบรหัสผ่านปัจจุบัน
เพื่อความปลอดภัย MySQL ไม่ได้ให้คำสั่งหรือวิธีการที่จะแสดงรหัสผ่าน root ที่มีอยู่โดยตรง หากคุณไม่ทราบรหัสผ่านปัจจุบัน ให้ดูส่วน “วิธีทำเมื่อคุณลืมรหัสผ่าน Root” และพิจารณารีเซ็ตรหัสผ่านใหม่
2. วิธีเปลี่ยนรหัสผ่าน Root ของ MySQL
การเปลี่ยนรหัสผ่าน root ของ MySQL อย่างสม่ำเสมอเป็นสิ่งสำคัญสำหรับการรักษาความปลอดภัย ในส่วนนี้เราจะอธิบายอย่างละเอียดว่าต้องเปลี่ยนรหัสผ่านโดยใช้ข้อมูลประจำตัว root ปัจจุบันอย่างไร
ขั้นตอนพื้นฐานในการเปลี่ยนรหัสผ่าน
ทำตามขั้นตอนเหล่านี้เพื่อเข้าสู่ MySQL และตั้งรหัสผ่านใหม่
ขั้นตอน
- เปิดเทอร์มินัลหรือ Command Prompt แล้วพิมพ์คำสั่งต่อไปนี้เพื่อเข้าสู่ MySQL:
mysql -u root -p
-u rootระบุว่าชื่อผู้ใช้คือ root-pจะให้คุณใส่รหัสผ่านระหว่างการเข้าสู่ระบบ
- รันคำสั่ง SQL ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
- โหลดข้อมูลสิทธิ์ใหม่โดยรันคำสั่ง:
FLUSH PRIVILEGES;
- หลังจากรันคำสั่งสำเร็จแล้ว ให้ออกจาก MySQL:
exit
หมายเหตุสำคัญ
ใช้รหัสผ่านที่แข็งแรง
เราแนะนำให้รหัสผ่านใหม่ของคุณมีองค์ประกอบต่อไปนี้: ตัวอย่าง:MyS3cure!2025- ตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก
- ตัวเลข
- สัญลักษณ์ (เช่น @, #, $, !)
- ความยาวอย่างน้อย 12 ตัวอักษร
- ระวังเซสชันที่กำลังทำงาน
หากคุณเปลี่ยนรหัสผ่านระหว่างเซสชันของ MySQL คุณอาจต้องเชื่อมต่อใหม่ - ตรวจสอบสิทธิ์ของผู้ใช้
ตรวจสอบให้แน่ใจว่าผู้ใช้ root มีสิทธิ์ที่เหมาะสม หากคุณไม่สามารถเปลี่ยนรหัสผ่านได้ ให้ติดต่อผู้ดูแลระบบของคุณ
ปัญหาทั่วไปเมื่อเปลี่ยนรหัสผ่าน
ไม่สามารถเข้าสู่ระบบได้หลังจากเปลี่ยนรหัสผ่าน
- สาเหตุ: คุณอาจไม่ได้รันคำสั่ง
FLUSH PRIVILEGES - วิธีแก้: เข้าสู่ระบบใหม่แล้วรัน
FLUSH PRIVILEGES;
รหัสผ่านใหม่ไม่ตรงตามนโยบายความปลอดภัย
- สาเหตุ: MySQL อาจเปิดใช้นโยบายรหัสผ่านที่เข้มงวดไว้
- วิธีแก้: ตั้งรหัสผ่านที่แข็งแรงขึ้นหรือปรับการตั้งค่านโยบายตามความจำเป็น
3. วิธีทำเมื่อคุณลืมรหัสผ่าน Root
หากคุณลืมรหัสผ่าน root ของ MySQL คุณจะไม่สามารถเข้าถึงฐานข้อมูลด้วยวิธีการล็อกอินปกติได้ อย่างไรก็ตามโดยการปิดการตรวจสอบสิทธิ์ของ MySQL ชั่วคราว คุณสามารถรีเซ็ตรหัสผ่านได้ ในส่วนนี้เราจะอธิบายขั้นตอนอย่างละเอียด
ขั้นตอนการรีเซ็ตรหัสผ่าน Root
1. หยุดบริการ MySQL
ก่อนอื่นให้หยุดบริการ MySQL เพื่อปิดฐานข้อมูลชั่วคราว ใช้คำสั่งต่อไปนี้:
sudo systemctl stop mysqld
- หากคำสั่งทำงานสำเร็จ บริการ MySQL จะหยุดทำงาน.
2. เริ่ม MySQL ด้วยการปิดการตรวจสอบสิทธิ์
เริ่ม MySQL ด้วยตัวเลือก --skip-grant-tables เพื่อปิดการตรวจสอบสิทธิ์.
sudo mysqld_safe --skip-grant-tables &
- คำสั่งนี้จะเริ่ม MySQL โดยไม่บังคับให้ตรวจสอบสิทธิ์
- สำคัญ: เนื่องจากความปลอดภัยลดลงอย่างมากในโหมดนี้ ให้แน่ใจว่าไม่มีผู้ใช้คนอื่นเข้าถึงระบบขณะทำการนี้.
3. รีเซ็ตรหัสผ่านของ Root
เข้าสู่ระบบ MySQL ขณะที่การตรวจสอบสิทธิ์ถูกปิดและรีเซ็ตรหัสผ่าน.
- เข้าสู่ระบบ MySQL:
mysql -u root
- ตั้งรหัสผ่าน root ใหม่ด้วยคำสั่งต่อไปนี้:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
- โหลดข้อมูลสิทธิ์ใหม่:
FLUSH PRIVILEGES;
- หลังจากทำงานเสร็จแล้ว ให้ออกจากระบบ MySQL:
exit
4. รีสตาร์ทบริการ MySQL
รีสตาร์ทบริการ MySQL เพื่อเปิดการตรวจสอบสิทธิ์ตามปกติอีกครั้ง:
sudo systemctl restart mysqld
หลังจากรีสตาร์ทแล้ว ให้เข้าสู่ระบบ MySQL ด้วยรหัสผ่านที่ตั้งใหม่.
หมายเหตุสำคัญ
- รักษาความปลอดภัย
- ขณะใช้ตัวเลือก
--skip-grant-tablesMySQL จะไม่มีการป้องกันใด ๆ ทำงานนี้ให้เร็วที่สุดและหลีกเลี่ยงความเสี่ยงที่ไม่จำเป็น - ผลกระทบต่อผู้ใช้คนอื่น
- วิธีนี้ออกแบบมาสำหรับบัญชี root เท่านั้น ให้แน่ใจว่าผู้ใช้คนอื่นไม่ได้รับผลกระทบ
การแก้ไขปัญหา
ไม่พบคำสั่ง mysqld_safe
- สาเหตุ: บนบางการแจกจ่ายของ Linux,
mysqld_safeอาจไม่ได้ติดตั้ง - วิธีแก้: เริ่ม MySQL โดยตรงโดยใช้:
sudo mysqld --skip-grant-tables &
ยังไม่สามารถเข้าสู่ระบบได้หลังจากรีเซ็ตรหัสผ่าน
- สาเหตุ: MySQL อาจไม่ได้โหลดข้อมูลสิทธิ์ที่อัปเดตใหม่
- วิธีแก้: เข้าสู่ระบบอีกครั้งและรัน
FLUSH PRIVILEGES;.
4. แนวปฏิบัติที่ดีที่สุดเพื่อเสริมความปลอดภัยของ MySQL
การจัดการรหัสผ่าน root ของ MySQL อย่างเหมาะสมเป็นสิ่งสำคัญ แต่ไม่เพียงพอเพียงอย่างเดียว เพื่อดำเนินการฐานข้อมูลอย่างปลอดภัย ควรใช้มาตรการความปลอดภัยเพิ่มเติม ส่วนนี้จะแนะนำวิธีปฏิบัติที่เป็นประโยชน์เพื่อเสริมความปลอดภัยของ MySQL.
ตั้งรหัสผ่านที่แข็งแรง
ความปลอดภัยของฐานข้อมูลขึ้นอยู่กับความแข็งแรงของรหัสผ่านอย่างมาก ปฏิบัติตามแนวทางต่อไปนี้เมื่อสร้างรหัสผ่านที่แข็งแรง.
แนวทางการสร้างรหัสผ่าน
- ความยาว: อย่างน้อย 12 ตัวอักษร
- ประเภทอักขระ: การผสมผสานของตัวอักษรพิมพ์ใหญ่, ตัวอักษรพิมพ์เล็ก, ตัวเลข, และสัญลักษณ์
- ตัวอย่าง:
2#SecureMySQL_2025!
ใช้นโยบายความปลอดภัย
MySQL อนุญาตให้คุณกำหนดนโยบายการตรวจสอบรหัสผ่าน ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบนโยบายปัจจุบัน:
SHOW VARIABLES LIKE 'validate_password%';
หากจำเป็น ให้แก้ไขนโยบายดังนี้:
SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_length = 12;
ลบบัญชีและข้อมูลที่ไม่จำเป็น
ตรวจสอบและลบบัญชีที่ไม่จำเป็น
ระหว่างการติดตั้ง MySQL อาจสร้างบัญชีทดสอบเริ่มต้นหรือผู้ใช้ไม่ระบุชื่อ ซึ่งอาจเป็นความเสี่ยงด้านความปลอดภัยและควรลบหากไม่จำเป็น.
- ตรวจสอบรายการผู้ใช้ปัจจุบัน:
SELECT user, host FROM mysql.user;
- ลบผู้ใช้ที่ไม่จำเป็น:
DROP USER 'username'@'hostname';
ลบฐานข้อมูลทดสอบ
ลบฐานข้อมูลทดสอบที่สร้างขึ้นระหว่างการติดตั้ง:
DROP DATABASE test;
จำกัดการเข้าถึงบัญชี Root
การจำกัดการเข้าถึงบัญชี root จะเพิ่มความปลอดภัย.
จำกัดการเข้าถึงเฉพาะในเครื่องเท่านั้น
โดยค่าเริ่มต้น บัญชี root อาจอนุญาตการเชื่อมต่อจากระยะไกล ให้จำกัดการเข้าถึงเฉพาะในเครื่องเท่านั้น:
UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
FLUSH PRIVILEGES;
สร้างบัญชีผู้ดูแลแยกต่างหาก
แทนการใช้บัญชี root โดยตรง แนะนำให้สร้างบัญชีผู้ดูแลเฉพาะสำหรับงานที่กำหนด
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongAdminPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
ปรับใช้หลักการให้สิทธิ์น้อยที่สุด
ปรับปรุงความปลอดภัยโดยให้สิทธิ์แต่ละผู้ใช้เพียงระดับที่จำเป็นที่สุด
ตรวจสอบสิทธิ์ที่มีอยู่
SHOW GRANTS FOR 'username'@'hostname';
เพิกถอนสิทธิ์ที่ไม่จำเป็น
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'hostname';
อัตโนมัติการกำหนดค่าความปลอดภัย MySQL
MySQL มีคำสั่ง mysql_secure_installation เพื่อทำให้การกำหนดค่าความปลอดภัยง่ายขึ้น การรันคำสั่งนี้จะทำให้คุณสามารถ:
- ลบบัญชีและฐานข้อมูลทดสอบ
- ปิดการเข้าสู่ระบบ root จากระยะไกล
- ใช้แนวทางความปลอดภัย
คำสั่งการดำเนินการ
sudo mysql_secure_installation
ทำการสำรองข้อมูลเป็นประจำ
เป็นส่วนหนึ่งของการเสริมความปลอดภัย การสำรองข้อมูลฐานข้อมูลเป็นประจำเป็นสิ่งที่แนะนำอย่างยิ่ง ซึ่งจะทำให้คุณสามารถกู้คืนข้อมูลได้ในกรณีที่เกิดปัญหาที่ไม่คาดคิด
ตัวอย่างการสำรองข้อมูล
- สำรองข้อมูลทุกฐานข้อมูล:
mysqldump -u root -p --all-databases > backup.sql
- สำรองข้อมูลฐานข้อมูลเฉพาะ:
mysqldump -u root -p database_name > database_name_backup.sql

5. คำถามที่พบบ่อย (FAQ)
ด้านล่างเป็นคำถามที่พบบ่อยและคำตอบเกี่ยวกับการจัดการรหัสผ่าน root ของ MySQL และการกำหนดค่าความปลอดภัย ใช้ส่วนนี้สำหรับการแก้ไขปัญหาและตอบข้อกังวลเพิ่มเติม
Q1. ฉันไม่พบรหัสผ่าน MySQL เริ่มต้นในบันทึก ควรทำอย่างไร?
A1:
ใน MySQL 5.7 และรุ่นต่อไป รหัสผ่านเริ่มต้นจะถูกบันทึกในไฟล์บันทึก (โดยทั่วไปคือ /var/log/mysqld.log) อย่างไรก็ตาม หากไม่พบไฟล์บันทึกหรือไฟล์ถูกลบ ให้ลองทำตามขั้นตอนต่อไปนี้:
- การติดตั้ง MySQL ใหม่จะสร้างรหัสผ่านชั่วคราวใหม่
- หากยังไม่สามารถเข้าสู่ระบบได้ ให้ดู “วิธีทำเมื่อคุณลืมรหัสผ่าน root” และรีเซ็ตรหัสผ่าน
Q2. ผู้ใช้ที่ไม่ใช่ root สามารถเปลี่ยนรหัสผ่านของตนโดยใช้ขั้นตอนเดียวกันได้หรือไม่?
A2:
ใช่ ผู้ใช้ที่ไม่ใช่ root สามารถเปลี่ยนรหัสผ่านของตนโดยใช้วิธีเดียวกันได้ อย่างไรก็ตาม จำเป็นต้องมีสิทธิ์ผู้ดูแลระบบสำหรับผู้ใช้นั้น ใช้คำสั่งต่อไปนี้:
ALTER USER 'username'@'hostname' IDENTIFIED BY 'NewStrongPassword';
Q3. ไม่พบคำสั่ง mysqld_safe ควรทำอย่างไร?
A3:
ในบางดิสทริบิวชันของ Linux mysqld_safe อาจไม่ได้ติดตั้ง ในกรณีนี้คุณสามารถเริ่ม MySQL ด้วยตัวเลือก --skip-grant-tables โดยใช้คำสั่ง mysqld ได้:
sudo mysqld --skip-grant-tables &
อย่างไรก็ตาม เนื่องจากวิธีนี้จะปิดการตรวจสอบสิทธิ์ จึงต้องใช้มาตรการความปลอดภัยเดียวกัน
Q4. ฉันเปลี่ยนรหัสผ่านแล้วแต่ยังเข้าสู่ระบบไม่ได้ ทำไม?
A4:
สาเหตุที่เป็นไปได้มีดังต่อไปนี้:
- ข้อมูลสิทธิ์ไม่ได้อัปเดต: หลังจากเปลี่ยนรหัสผ่าน ให้รันคำสั่งต่อไปนี้เพื่อรีเฟรชสิทธิ์:
FLUSH PRIVILEGES;
- พิมพ์ผิด: ตรวจสอบให้แน่ใจว่าตัวอักษรใหญ่ ตัวอักษรเล็ก และอักขระพิเศษในรหัสผ่านใหม่ถูกป้อนอย่างถูกต้อง
- ข้อจำกัดนโยบายรหัสผ่าน: MySQL อาจปฏิเสธรหัสผ่านที่อ่อนตามนโยบายความปลอดภัย ตรวจสอบการตั้งค่านโยบายและใช้รหัสผ่านที่แข็งแรงกว่า
Q5. มีวิธีใดที่จะเสริมความปลอดภัย MySQL ทั้งหมดในครั้งเดียวหรือไม่?
A5:
เพื่อกำหนดค่าความปลอดภัย MySQL อย่างมีประสิทธิภาพ แนะนำให้ใช้คำสั่ง mysql_secure_installation คำสั่งนี้จะทำงานต่อไปนี้โดยอัตโนมัติ:
- ลบผู้ใช้และฐานข้อมูลทดสอบ
- ปิดการเข้าสู่ระบบ root จากระยะไกล
- ใช้นโยบายรหัสผ่านที่แข็งแรง
รันคำสั่งดังนี้:
sudo mysql_secure_installation
Q6. การจัดการรหัสผ่านแตกต่างกันตามเวอร์ชันของ MySQL หรือไม่?
A6:
ใช่ วิธีการจัดการรหัสผ่าน root อาจแตกต่างกันตามเวอร์ชันของ MySQL ความแตกต่างหลักคือ:
- MySQL 5.7 และรุ่นต่อไป: รหัสผ่านชั่วคราวจะถูกสร้างโดยอัตโนมัติและบันทึกในไฟล์บันทึก
- MySQL 5.6 และรุ่นก่อนหน้า: รหัสผ่านเริ่มต้นอาจเป็นค่าว่าง (ไม่มีการตั้งรหัสผ่าน)
เพื่อตรวจสอบเวอร์ชันของ MySQL ให้ใช้คำสั่งต่อไปนี้:
mysql --version
Q7. ฉันจะอนุญาตการเชื่อมต่อระยะไกลสำหรับผู้ใช้ root ได้อย่างไร?
A7:
ด้วยเหตุผลด้านความปลอดภัย ไม่แนะนำให้เข้าถึง root จากระยะไกล อย่างไรก็ตาม หากจำเป็น คุณสามารถเปิดใช้งานได้ด้วยคำสั่งต่อไปนี้:
- อนุญาตการเข้าถึงจากระยะไกล:
UPDATE mysql.user SET host = '%' WHERE user = 'root';
- โหลดข้อมูลสิทธิ์ใหม่:
FLUSH PRIVILEGES;
Important:
หากคุณอนุญาตการเข้าถึงจากระยะไกล โปรดตรวจสอบให้แน่ใจว่าได้ดำเนินการมาตรการความปลอดภัยเพิ่มเติม เช่น กฎไฟร์วอลล์และการจำกัด IP
Q8. คุณสามารถอธิบายขั้นตอนการรีเซ็ตรหัสผ่าน root อย่างสั้นได้หรือไม่?
A8:
- หยุดบริการ MySQL:
sudo systemctl stop mysqld
- เริ่ม MySQL โดยปิดการตรวจสอบสิทธิ์:
sudo mysqld_safe --skip-grant-tables &
- รีเซ็ตรหัสผ่าน:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword'; FLUSH PRIVILEGES;
- รีสตาร์ทบริการ MySQL:
sudo systemctl restart mysqld


