lost mysql root privileges
วันหนึ่งครับ
MySQL admin พบว่า สิทธิ root ของ MySQL servre เครื่อง master ตัวใหญ่ที่สุดถูกจำกัดเหลือแค่นี้
[root@host mysql]# mysql -u root -p Enter password: mysql> GRANT ALL PRIVILEGES ON *.* TO 'root' WITH GRANT OPTION; ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | theprince | +--------------------+ 2 rows in set (0.00 sec)
งานเข้าละครับ – -!
จะด้วยเหตุผลอะไรก็ตาม hacker, physical crash , bla bla bla
แก้ด้วยการ
1. ปิด MySQL ก่อน
Redhat base
services mysqld stop
Debian base
/etc/init.d/mysql stop
2. start MySQL แบบไม่ใช้ password
mysqld_safe --skip-grant-tables &
3. login เป็น root โดยไม่ต้องใส่ password
mysql -u root
4.เพิ่มสิทธิให้ root
use mysql; update user set Select_priv='Y', Insert_priv='Y',Update_priv='Y',Delete_priv='Y', Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y', Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y', Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y', Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y', Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y', Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y', Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y' where User='root';
5. หยุดการทำงานของ MySQL ในโหมดไม่ใช้ password
Redhat base
services mysqld stop
Debian base
/etc/init.d/mysql stop
6. เริ่มการทำงาน MySQL
Redhat base
services mysqld start
Debian base
/etc/init.d/mysql start
จบ.