MySQL error ต้องเข้าไป repaire database ทั้งหมด
แต่ไม่รู้รหัสผ่านของ root ใน mysql ( root ของ Linux ) ทำอย่างไร?
กรณีศึกษา
1. วิเคราะห์สถานการณ์ก่อน
– Table mysql.user error ทำให้เพิ่มแก้ไข user ไม่ได้
– Table อื่น ๆ ในฐานข้อมูลมีปัญหา เข้าใช้งานไม่ได้
– ไม่ทราบรหัสผ่านของ root ใน mysql
2. ออกแบบการแก้ไขปัญหาดังกล่าว
– reset root password ใน mysql
– repaire mysql.user
– repaire all databases
3. เริ่มการแก้ปัญหา
3.1) เปิดไฟล์ /etc/my.cnf
ทำการเพิ่ม skip-grant-tables ใน [mysqld] ดังนี้
[mysqld]
skip-grant-tables
3.2) เสร็จแล้วเริ่มการทำงานของ mysql ใหม่
#/path-to-mysqld/mysqld restart
3.3) เข้าสู่ mysql
# mysql
3.4) ทำการ repair table mysql.user
mysql>REPAIR TABLE mysql.user;
3.5) เปลี่ยนรหัสผ่าน root
mysql>update user set password=PASSWORD(‘รหัสผ่านใหม่’) where user=’root’;
mysql>FLUSH PRIVILEGES;
mysql>q
3.6) แก้ไขไฟล์ /etc/my.cnf โดยเอา skip-grant-tables ใน [mysqld] ออก
แล้วทำการ restart mysqld อีกครั้ง
#/path-to-mysqld/mysqld restart
3.7) ทำการ check และ repair database ทั้งหมด
#mysqlcheck -p –auto-repair –all-databases -u root
Enter Password : [กรอกรหัสผ่านใหม่]
รอให้รันจนเสร็จ database ก็จะได้รับการซ่อมแซมและสามารถใช้งานได้ดังเดิม