So im getting the very common ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
mysql error. I have tried all of the typical fixes on the forums, logging in via the mysql_safe method and then trying to reset my root password. However when doing so it returns with;
UPDATE user SET password=PASSWORD("PASSWORD")WHERE user="root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
So as no rows were affected I assumed there was no user to actually change. I tried to create a user:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
-> GRANT ALL ON *.* TO 'root'@'localhost'
-> flush privileges;
However this returns with ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT ALL ON *.* TO 'root'@'localhost'
Seeing what the current user is:
mysql> SELECT user();
+--------+
| user() |
+--------+
| root@ |
+--------+
I assume the syntax error is the fact that nothing comes after the @ after "root". How can i edit this information to be root@localhost and correct the issue?
UPDATE
after carefully reading the mysqld docs i got to this section which worked perfectly.
Stop mysqld and restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges. Because this is insecure, you might want to use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting.
Connect to the mysqld server with this command:
shell> mysql
Issue the following statements in the mysql client. Replace the password with the password that you want to use.
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.
i've got that same error message (Access denied for user 'root'@'localhost' (using password: YES)) when i've tried to login in my freshly new installed mysql server.
I didn't know that when installing mysql-community-server (rpm) on redhat6.5, A superuser account 'root'@'localhost' is created and a password for the superuser is set and stored in the error log file and that to reveal it, i should use the :
I just check the password in the "mysqld.log" file and use it to login. Once in, i've changed that default password.
here is the link to the mysql's page for reference
it should be three sql statements,