Reputation: 2670
I have a MySQL installed on my linux server, I forgot it's password so I went and changed it using the methods I found on the web. What I did was as follows:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit
The update query did change the password as it showed me the number of rows affected and Query OK etc.
Then I restarted mysql
/etc/init.d/mysql stop
/etc/init.d/mysql start
Now when I logged in with the new password
mysql -u root -p new_pass
it still gives me errors "ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Yes)"
Is there something that I am missing?
Upvotes: 10
Views: 136596
Reputation: 35
Maybe the current user is not root,try sudo mysql -uroot -p ,I successed just now.
Upvotes: 0
Reputation: 21
In my case:
(in new window)
Upvotes: 2
Reputation: 600
On mac os, please follow below steps:
Stop MySQL
$ sudo /usr/local/mysql/support-files/mysql.server stop Start it in safe mode:
$ sudo mysqld_safe --skip-grant-tables (above line is the whole command)
This will be an ongoing command until the process is finished so open another shell/terminal window, log in without a password:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; Start MySQL
sudo /usr/local/mysql/support-files/mysql.server start your new password is 'password'.
Upvotes: 3
Reputation: 356
You may need to clear the plugin
column for your root account. On my fresh install, all of the root user accounts had unix_socket
set in the plugin
column. This was causing the root sql account to be locked only to the root unix account, since only system root could login via socket.
If you update user set plugin='' where User='root';flush privileges;
, you should now be able to login to the root account from any localhost unix account (with a password).
See this AskUbuntu question and answer for more details.
Upvotes: 3
Reputation: 3807
I meet the same problem, @progrAmmar enlightened me, "took a closer look at the user table in mysql database".
My problem is not ssl_type, instead of the first field:Host. I changed the value by using
update user set Host='localhost' where User='root' and Host='%';
in mysqld_safe --skip-grant-tables
model.
Then it works well.
Upvotes: 3
Reputation: 41
I had the same problem. You have to write mysql -u root -p
NOT mysql
or mysql -u root -p root_password
Upvotes: 4
Reputation: 17318
You have to reset the password! steps for mac osx(tested and working) and ubuntu
Stop MySQL
$ sudo /usr/local/mysql/support-files/mysql.server stop
Start it in safe mode:
$ sudo mysqld_safe --skip-grant-tables
(above line is the whole command)
This will be an ongoing command until the process is finished so open another shell/terminal window, log in without a password:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
Start MySQL
sudo /usr/local/mysql/support-files/mysql.server start
your new password is 'password'.
Upvotes: 7
Reputation: 1413
I was able to solve this problem by executing this statement
sudo dpkg-reconfigure mysql-server-5.5
Which will change the root password.
Upvotes: 17
Reputation: 2670
Actually I took a closer look at the user table in mysql database, turns out someone prior to me edited the ssl_type field for user root to SSL.
I edited that field and restarted mysql and it worked like a charm.
Thanks.
Upvotes: 0
Reputation: 3548
You can try this solution :-
To have mysql asking you for a password, you also need to specify the -p-option: (try with space between -p and password)
mysql -u root -p new_password
In the Second link someone has commented the same problem.
Upvotes: -1