First order of business is getting in with full permissions. If you cannot, add this line to your my.cnf and restart mysql:
skip-grant-tables
I recommend doing a little recon to see what users you have:
SELECT user,host,password FROM mysql.user WHERE user = 'root' ORDER BY host ASC;
This will display your users list, something like:
mysql> SELECT user,host,password FROM mysql.user WHERE user = 'root' ORDER BY host ASC;
+------+------------+-------------------------------------------+
| user | host | password |
+------+------------+-------------------------------------------+
| root | 127.0.0.1 | |
| root | ::1 | |
| root | localhost | *E0AD777475E6713F9B04317EE38888D61042DAC1 |
| root | randym-mbp | |
+------+------------+-------------------------------------------+
4 rows in set (0.01 sec)
You need to see localhost in the list. If you do not, add it like this:
GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
Otherwise simply update the password like this:
SET PASSWORD FOR root@'localhost' = PASSWORD('your_password');
FLUSH PRIVILEGES;
Then remove skip-grant-tables from your my.cnf and restart mysql.