วิธีรีเซ็ตรหัสผ่านรูทใน MySQL 8.0
ในกรณีที่โชคร้ายที่ลืมหรือทำรหัสผ่านรูท MySQL หาย คุณจะต้องมีวิธีการกู้คืนรหัสผ่านอย่างแน่นอน สิ่งที่เราต้องรู้คือรหัสผ่านถูกเก็บไว้ในตารางผู้ใช้ ซึ่งหมายความว่าเราต้องหาวิธีเลี่ยงผ่านการรับรองความถูกต้องของ MySQL เพื่อให้เราสามารถอัปเดตบันทึกรหัสผ่านได้
โชคดีที่ทำได้ง่าย และบทช่วยสอนนี้จะแนะนำคุณตลอดกระบวนการกู้คืนหรือรีเซ็ตรหัสผ่านรูทในเวอร์ชัน MySQL 8.0
ตามเอกสาร MySQL มีสองวิธีในการรีเซ็ตรหัสผ่าน root MySQL เราจะตรวจสอบทั้งสองอย่าง
รีเซ็ตรหัสผ่านรูท MySQL โดยใช้ –init-file
วิธีหนึ่งในการรีเซ็ตรหัสผ่านรูทคือการสร้างไฟล์ในเครื่องแล้วเริ่มบริการ MySQL โดยใช้ตัวเลือก --init-file
ดังที่แสดง
vim /home/user/init-file.txt
สิ่งสำคัญคือคุณต้องแน่ใจว่าผู้ใช้ mysql สามารถอ่านไฟล์ได้ ภายในไฟล์นั้นให้วางสิ่งต่อไปนี้:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
ในข้างต้นให้เปลี่ยน “new_password” ด้วยรหัสผ่านที่คุณต้องการใช้
ตอนนี้ตรวจสอบให้แน่ใจว่าบริการ MySQL หยุดทำงานแล้ว คุณสามารถทำสิ่งต่อไปนี้:
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
จากนั้นรันสิ่งต่อไปนี้:
mysqld --user=mysql --init-file=/home/user/init-file.txt --console
นี่จะเป็นการเริ่มบริการ MySQL และในระหว่างกระบวนการจะดำเนินการกับไฟล์ init ที่คุณสร้างขึ้น ดังนั้นรหัสผ่านสำหรับผู้ใช้รูทจะได้รับการอัปเดต ตรวจสอบให้แน่ใจว่าได้ลบไฟล์เมื่อรีเซ็ตรหัสผ่านแล้ว
ตรวจสอบให้แน่ใจว่าได้หยุดเซิร์ฟเวอร์และเริ่มต้นตามปกติหลังจากนั้น
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
ตอนนี้คุณควรจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในฐานะรูทได้โดยใช้รหัสผ่านใหม่
mysql -u root -p
รีเซ็ตรหัสผ่านรูท MySQL โดยใช้ –skip-grant-tables
ตัวเลือกที่สองที่เรามีคือเริ่มบริการ MySQL ด้วยตัวเลือก --skip-grant-tables
ซึ่งมีความปลอดภัยน้อยกว่า เนื่องจากในขณะที่บริการเริ่มต้นในลักษณะนั้น ผู้ใช้ทุกคนสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่าน
หากเซิร์ฟเวอร์เริ่มทำงาน --skip-grant-tables
ตัวเลือกสำหรับ --skip-networking
จะถูกเปิดใช้งานโดยอัตโนมัติ ดังนั้นการเชื่อมต่อระยะไกลจะไม่สามารถใช้ได้
ขั้นแรกตรวจสอบให้แน่ใจว่าบริการ MySQL หยุดทำงานแล้ว
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
จากนั้นเริ่มบริการด้วยตัวเลือกต่อไปนี้
mysqld --skip-grant-tables --user=mysql &
จากนั้นคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ mysql ได้โดยเพียงแค่เรียกใช้
mysql
เนื่องจากการจัดการบัญชีถูกปิดใช้งานเมื่อเริ่มบริการด้วยตัวเลือก --skip-grant-tables
เราจะต้องโหลดเงินช่วยเหลืออีกครั้ง ด้วยวิธีนี้เราจะสามารถเปลี่ยนรหัสผ่านได้ในภายหลัง:
FLUSH PRIVILEGES;
ตอนนี้คุณสามารถเรียกใช้แบบสอบถามต่อไปนี้เพื่ออัปเดตรหัสผ่าน ตรวจสอบให้แน่ใจว่าได้เปลี่ยน “new_password” ด้วยรหัสผ่านจริงที่คุณต้องการใช้
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
ตอนนี้หยุดเซิร์ฟเวอร์ MySQL และเริ่มต้นตามปกติ
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
คุณควรจะสามารถเชื่อมต่อกับรหัสผ่านใหม่ของคุณได้
mysql -u root -p
คุณอาจต้องการอ่านบทความที่เกี่ยวข้องกับ MySQL ที่เป็นประโยชน์เหล่านี้
- วิธีการติดตั้ง MySQL 8 ใน CentOS, RHEL และ Fedora
- 15 เคล็ดลับการปรับแต่งและเพิ่มประสิทธิภาพ MySQL ที่เป็นประโยชน์
- 12 แนวทางปฏิบัติด้านความปลอดภัย MySQL สำหรับ Linux
- 4 เครื่องมือ Commandline ที่มีประโยชน์ในการตรวจสอบประสิทธิภาพ MySQL
- คำสั่งการดูแลฐานข้อมูล MySQL
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีรีเซ็ตรหัสผ่านรูทที่หายไปสำหรับเซิร์ฟเวอร์ MySQL 8.0 ฉันหวังว่ากระบวนการนี้จะง่าย