PANIC Mode ... lost mysql password! Chill out! PDF Print E-mail
Written by Ken Task   
Thursday, 27 March 2008 00:26
AddThis Social Bookmark Button
It happens to even the most organized and careful server administrators ... lost mysql password.  Well, don't PANIC!  Chill out!  There's some things to try before thinking and taking drastic actions!

First, if you run a Moodle or a Joomla, the config files of either contain a DB user variable as well as a password variable and they are in clear text.  In Moodle, go to your Moodle directory and cat config.php.
In Joomla, go to your Joomla directory and cat configuration.php.

Think ... if you run other PHP/MySQL apps on that same server, they too might have similar parameters for their configuration.

If the above is no help, now it's time to get "guru-ish".   Here's how:

Reference:
http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

How to Reset a MySQL Password in 5 Easy Steps

   1. Stop the mysqld daemon process.
   2. Start the mysqld daemon process with the --skip-grant-tables option.
   3. Start the mysql client with the -u root option.
   4. Execute the UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
   5. Execute the FLUSH PRIVILEGES; command.

These steps reset the password for the "root" account to "password". To change the password for a different account, or to set a different password, just edit the variables in single-quotes in step 4.

If you know your existing MySQL root password, steps 1-3 are not necessary.

In a Unix (Linux) environment, the procedure for resetting the MySQL root password is as follows:

   1.  Log on to your system as either the Unix root user or as the same user that the mysqld server runs as.

   2.  Locate the .pid file that contains the server's process ID. The exact location and name of this file depend on your distribution, hostname, and configuration. Common locations are /var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/. Generally, the filename has the extension of .pid and begins with either mysqld or your system's hostname.
You can stop the MySQL server by sending a normal kill (not kill -9) to the mysqld process, using the pathname of the .pid file in the following command:

      shell> kill `cat /mysql-data-directory/host_name.pid`

Note the use of backticks rather than forward quotes with the cat command; these cause the output of cat to be substituted into the kill command.

   3. Create a text file and place the following command within it on a single line:

      SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

      Save the file with any name. For this example the file will be ~/mysql-init.

   4. Restart the MySQL server with the special --init-file=~/mysql-init option:

      shell> mysqld_safe --init-file=~/mysql-init &

      The contents of the init-file are executed at server startup, changing the root password. After the server has started successfully you should delete ~/mysql-init.

   5. You should be able to connect using the new password.

* Alternatively, on any platform, you can set the new password using the mysql client
(but this approach is less secure):

1.  Stop mysqld

On a CentOS5 box: /sbin/service mysqld stop

and restart it with the --skip-grant-tables --user=root options (Windows users omit the --user=root portion).

mysqld_safe --skip-grant-tables --user=root &

2. Using another terminal session, connect to the mysqld server with this command:

      shell> mysql -u root

3. Issue the following statements in the mysql client:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')
     ->                   WHERE User='root';
mysql> FLUSH PRIVILEGES;

Replace “newpwd” with the actual root password that you want to use.

4.  You should be able to connect using the new password.

 
Joomla template by a4joomla