Friday, October 17, 2008

this page was very helpful when i needed to reset root's password on my mysql server. 

  • in the following instructions (the ones in the link here) I changed the command mysqld for "mysql_safe ... &"

  • to see running processes on the system type "ps ax | grep process_name", where process_ name can be something like "mysql". for example:
# ps ax|grep pgsql
 1681 ?        S      0:05 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
17251 pts/1    R+     0:00 grep pgsql
  • to kill a process in linux, you can type "kill 1681", where 1681 is the process id
  • sometimes i don't know why, this process isn't killed, so I do "kill -9 1681", and that effectively kills the process...

To reset a root password that you forgot (using paths on our system): 

[root@host root]#killall mysqld [root@host root]#/usr/libexec/mysqld -Sg --user=root & 

You may have better luck with: 

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

Go back into MySQL with the client: 

[root@host root]# mysql Welcome to the MySQL monitor.  Commands end with ; or g. Your MySQL connection id is 1 to server version: 3.23.41 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> USE mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> UPDATE user -> SET password=password("newpassword") -> WHERE user="root"; Query OK, 2 rows affected (0.04 sec) Rows matched: 2  Changed: 2  Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit; [root@host root]#killall mysqld 

Start MySQL the normal way for your system, and all is good. For Red Hat this is: 

/etc/init.d/mysqld start