How to recover mysql root password in Linux

mysql

I installed my mysql two months ago and got busy afterwards. I already set everything, root password, permissions, cron for dump, phpmyadminl and some other stuffs. Since i got busy, never had a chance to explore and go back until now. But the problem is, i forgot the root password i set. In case you need to recover the root password in Linux here are some steps that can help you.

 

 

Step # 1: Stop the MySQL server process.

Step # 2: Start the MySQL (mysqld) server/daemon process with the –skip-grant-tables option so that it will not prompt for password.

Step # 3: Connect to mysql server as the root user.

Step # 4: Setup new mysql root account password i.e. reset mysql password.

Step # 5: Exit and restart the MySQL server.

 

The corresponding commands to use in accordance to above steps are the following.  Make sure you are logged as root in your linux box when doing it.

Step # 1 : Stop mysql service

# /etc/init.d/mysql stop

Output:

Stopping MySQL database server: mysqld.

Step # 2: Start to MySQL server w/o password:

# mysqld_safe --skip-grant-tables &

Output:

130607 14:16:49  mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130607 14:16:49  InnoDB: Initializing buffer pool, size = 8.0M
130607 14:16:49  InnoDB: Completed initialization of buffer pool
130607 14:16:49  InnoDB: Started; log sequence number 0 44233

Step # 3: Connect to mysql server using mysql client:

# mysql -u root

Output:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Step # 4: Setup new MySQL root user password

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

Step # 5: Stop MySQL Server:

# /etc/init.d/mysql stop

Output:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done                    mysqld_safe --skip-grant-tables

Step # 6: Start MySQL server and test it

# /etc/init.d/mysql start
# mysql -u root -p

 

Reference