Şifrelerinizi herhangi bir mecrada (password managerler dahil) yazılı bir şekilde tutmamak güvenlik tedbirlerinin başında gelen bir konudur. Ancak uzun zamandır uğrayıp hatrını sormadığınız bir mysql sunucunuz olabilir ve hatta bu nedenle zamanında belirlediğiniz şifreyi de unutmuş olabilirsiniz.

İşte bu gibi durumlarda yapılabilecek şeylerden biri şifreyi hatırlamak :) bir diğeri ise şifreyi resetlemektir. Neyseki mysql’in şifre resetleme prosedürü bir iki adımda halledilebilecek kadar basit bir olay. İnternette konu ile ilgili bulabileceğiniz bir çok dökümanın bir benzeri olan ve kendime not olması açısından yazdığım bu postta da, mysql şifrelerinin kolayca nasıl resetlenebileceği anlatılmaktadır.

İzlenmesi gereken adımlar şöyle:

Mysql’i durdurun.

# /etc/init.d/mysqld stop

Stopping MySQL:            [  OK  ]

Şimdi, skip-grant özelliği ile tekrar başlatın:

# mysqld_safe --skip-grant-tables &

Starting mysqld daemon with databases from /var/lib/mysql

Mysql’e passwordsüz bağlanın.

# mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.45 Source distribution

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>

Aşağıdaki komutları sırası ile vererek yeni şifrenizi belirleyin.

mysql> use mysql;
mysql> update user set password=PASSWORD("Yeni_Sifreniz") where User='root';
mysql> flush privileges;
mysql> quit;

Mysql’i yeniden stop edin.

# /etc/init.d/mysqld stop

Stopping MySQL:      [  OK  ]
[1]+  Done mysqld_safe --skip-grant-tables

Son olarak normal bir şekilde başlatın.

# /etc/init.d/mysqld start

Hepsi bu.
Artık yeni şifreniz ile login olabiliyor olmalısınız.

Bu işlem bir CentOS üzerinde yapıldı, kullanığınız dağıtıma göre init scriptinin yeri değişebilir. Ayrıca, mesela FreeBSD kullanıyorsanız start stop scripti bildiğiniz gibi /usr/local/etc/rc.d/mysql-server şeklindedir. Bunun dışında kalan diğer her adım aynıdır.

Kaynak:

http://www.cyberciti.biz/tips/recover-mysql-root-password.html