เมื่อคุณลืมรหัสผ่าน root ใน mysql ทำอย่างไรดี [Howto reset MySQL root password]

สวัสดีครับ พอดีวันนี้เกิดเหตุการณ์ที่ไม่คาดคิดขึ้น คือ MySQL error ต้องเข้าไป repaire database ทั้งหมด
แต่ติดอยู่ว่า ผมไม่รู้รหัสผ่านของ root ใน mysql (แต่เป็น root ของ Linux นะ) ลองดูเป็นกรณีศึกษาครับ

วิเคราะห์สถานการณ์

  • Table mysql.user error ทำให้เพิ่มแก้ไข user ไม่ได้
  • Table อื่น ๆ ในฐานข้อมูลมีปัญหา เข้าใช้งานไม่ได้
  • ไม่ทราบรหัสผ่านของ root ใน mysql

ออกแบบการแก้ปัญหา

  • reset root password ใน mysql
  • repaire mysql.user
  • repaire all databases

เริ่มการแก้ปัญหา

เปิดไฟล์ /etc/my.cnf
ทำการเพิ่ม skip-grant-tables ใน [mysqld] ดังนี้
[mysqld]
skip-grant-tables

เสร็จแล้วเริ่มการทำงานของ mysql ใหม่
#/path-to-mysqld/mysqld restart

เข้าสู่ mysql

mysql

ทำการ repair table mysql.user
mysql>REPAIR TABLE mysql.user;

เปลี่ยนรหัสผ่าน root
mysql>update user set password=PASSWORD(‘รหัสผ่านใหม่’) where user=‘root’;
mysql>FLUSH PRIVILEGES;
mysql>\q

แก้ไขไฟล์ /etc/my.cnf โดยเอา skip-grant-tables ใน [mysqld] ออก
แล้วทำการ restart mysqld อีกครั้ง
#/path-to-mysqld/mysqld restart

ทำการ check และ repair database ทั้งหมด
#mysqlcheck -p --auto-repair --all-databases -u root
Enter Password : [ใส่รหัสผ่านที่ตั้งใหม่]

รอจนเสร็จ database ของเราก็จะได้รับการซ่อมแซมและกลับมาใช้งานได้เหมือนเดิม

หมายเหตุ ผมลองหลายวิธี หลายคำสั่ง และวิธีการที่กล่าวมานี้ใช้ได้จริงกับสถานการณ์ของผม หากท่านต้องนำไปใช้ควรปรับให้เข้ากับสถานการณ์ของท่านเอง

Credit : http://www.binarywebhost.com

ขอบคุณที่แบ่งปันครับ

เสริมให้นิดนึงครับ
หรือจะเอาจาก
/usr/local/directadmin/conf
mysql.conf

user pass ในนี้ เทียบเท่ากับ root ของ mysql ครับ
สามารถสั่ง repair ได้เหมือนกันผ่าน command

หรือ login ใน phpmyamin จะเห็นทุกๆ ฐานข้อมูล สามารถเข้าไปจัดการได้อีก 1 ช่องทางครับ

ปล. สำหรับท่านๆ ที่ใช้ DA นะ

ส่วนในกรณี การลืมรหัสผ่าน Admin ของ Directadmin
ใช้วิธี passwd admin
แล้วเคาะรหัสผ่านใหม่ลงไปได้เลยครับ
หรือขยันก็ทำปุ๋ม NewPassword ใหม่เลยจ๊า :smash:

ปล ในกรณีการเผลอไปเปลี่ยนรหัสผ่าน ในไฟล์ /usr/local/directadmin/conf/mysql.conf จะไม่สามารถทำได้โดยทันที
มิฉะนั้นแล้ว ท่านจะพบว่า Database จะใช้ไม่ได้เลยทีเดียว ต้องใช้วิธีการ Reset ทางคุณ binarywebhost

ขอบคุณครับ

อีกวิธีครับ

ขอบคุณครับ

ขอ save ไว้เป็นความรู้ครับ ขอบคุณครับ

ทำไรเยอะแยะ ปัญญาอ่อน

[quote author=HaXoR link=topic=8816.msg85332#msg85332 date=1196265056]
ทำไรเยอะแยะ ปัญญาอ่อน

ขอบคุณมากครับ มีประโยชน์มาก

lol

[quote author=HaXoR link=topic=8816.msg85332#msg85332 date=1196265056]
ทำไรเยอะแยะ ปัญญาอ่อน

lol

แบบนี้ก็ได้ครับผมก็เคยเกิดขึ้น คล้ายกัน

killall mysqld
/usr/local/bin/mysqld_safe --skip-grant-tables --skip-networking & mysql -u root
mysql> use mysql;
mysql >UPDATE user SET Password=PASSWORD(“1234”) WHERE User=“root”;
mysql > exit;
killall mysqld
/usr/local/etc/rc.d/mysql-server.sh start

ใช้กับเวอร์ชั่น 4 - 5

:slight_smile:

[quote author=HaXoR link=topic=8816.msg85332#msg85332 date=1196265056]
ทำไรเยอะแยะ ปัญญาอ่อน

กระทู้ดีมีประโยชน์แบบนี้ ต้อง +1 ให้เลยครับ

ดีครับดี +1

เมื่อก่อนผมก็เจอ (มือซน

Posted by: ICOM
ขอ save ไว้เป็นความรู้ครับ ขอบคุณครับ

  • ส่ง Ex HDD ไปโคลนนิ่งมาบ้างได้ไหมครับ

เยี่ยมครับ

ขอบคุณครับ

ขอบคุณคับ ได้ความรู้อีกแล้ว