First things first. Log in as root and stop the mysql daemon. Now lets start up the mysql daemon and skip the grant tables which store the passwords.
You should see mysqld start up successfully. If not, well you have bigger issues. Now you should be able to connect to mysql without a password.
#mysql –user=root mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 5.0.22
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql> update user set Password=PASSWORD(‘new-password’) where user=’root’;
Now stop your running mysqld, then restart it normally. You should be good to go. Try not to forget your password again.