ค้นหาเว็บไซต์

วิธีรีเซ็ตรหัสผ่านรูทใน 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 ที่เป็นประโยชน์เหล่านี้

  1. วิธีการติดตั้ง MySQL 8 ใน CentOS, RHEL และ Fedora
  2. 15 เคล็ดลับการปรับแต่งและเพิ่มประสิทธิภาพ MySQL ที่เป็นประโยชน์
  3. 12 แนวทางปฏิบัติด้านความปลอดภัย MySQL สำหรับ Linux
  4. 4 เครื่องมือ Commandline ที่มีประโยชน์ในการตรวจสอบประสิทธิภาพ MySQL
  5. คำสั่งการดูแลฐานข้อมูล MySQL
บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีรีเซ็ตรหัสผ่านรูทที่หายไปสำหรับเซิร์ฟเวอร์ MySQL 8.0 ฉันหวังว่ากระบวนการนี้จะง่าย