MySQL Error: : 'Access denied for user 'root'@'localhost'

mysql error handling
mysql error 1064
mysql 5.7 error codes
mysql error 2003
mysql error log
mysql error 1146
mysql error 2019
mysql error xampp

$ ./mysqladmin -u root -p 'redacted' Enter password:

mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)'

How can I fix this?

  1. Open & Edit /etc/my.cnf or /etc/mysql/my.cnf, depending on your distro.
  2. Add skip-grant-tables under [mysqld]
  3. Restart Mysql
  4. You should be able to login to mysql now using the below command mysql -u root -p
  5. Run mysql> flush privileges;
  6. Set new password by ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. Go back to /etc/my.cnf and remove/comment skip-grant-tables
  8. Restart Mysql
  9. Now you will be able to login with the new password mysql -u root -p

MySQL 5.7 Reference Manual :: B.3.1 Server Error , Case 1: Duplicate value. Set the primary key column as AUTO_INCREMENT. ALTER TABLE 'table_name' ADD 'column_name' INT NOT NULL AUTO_INCREMENT PRIMARY KEY; Now, when you are trying to insert values, ignore the primary key column. Also you can insert NULL value to primary key column to generate sequence number. Error messages can originate on the server side or the client side: On the server side, error messages may occur during the startup and shutdown processes, as a result of issues that occur during SQL statement execution, and so forth. The MySQL server writes some error messages to its error log.

All solutions I found were much more complex than necessary and none worked for me. Here is the solution that solved my problem. No need to restart mysqld or start it with special privileges.

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

With a single query we are changing the auth_plugin to mysql_native_password and setting the root password to root (feel free to change it in the query)

Now you should be able to login with root. More information can be found in mysql documentation

(exit mysql console with Ctrl + D or by typing exit)

MySQL SHOW ERRORS, It also lists the error messages that the MySQL server and MySQL client programs generate. The final section is for troubleshooting. It describes common problems  For the connection specified by mysql, mysql_error() returns a null-terminated string containing the error message for the most recently invoked API function that failed. If a function did not fail, the return value of mysql_error() may be the previous error or an empty string to indicate no error.

I tried many steps to get this issue corrected. There are so many sources for possible solutions to this issue that is is hard to filter out the sense from the nonsense. I finally found a good solution here:

Step 1: Identify the Database Version

$ mysql --version

You'll see some output like this with MySQL:

$ mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Or output like this for MariaDB:

mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Make note of which database and which version you're running, as you'll use them later. Next, you need to stop the database so you can access it manually.

Step 2: Stopping the Database Server

To change the root password, you have to shut down the database server beforehand.

You can do that for MySQL with:

$ sudo systemctl stop mysql

And for MariaDB with:

$ sudo systemctl stop mariadb

Step 3: Restarting the Database Server Without Permission Checking

If you run MySQL and MariaDB without loading information about user privileges, it will allow you to access the database command line with root privileges without providing a password. This will allow you to gain access to the database without knowing it.

To do this, you need to stop the database from loading the grant tables, which store user privilege information. Because this is a bit of a security risk, you should also skip networking as well to prevent other clients from connecting.

Start the database without loading the grant tables or enabling networking:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

The ampersand at the end of this command will make this process run in the background so you can continue to use your terminal.

Now you can connect to the database as the root user, which should not ask for a password.

$ mysql -u root

You'll immediately see a database shell prompt instead.

MySQL Prompt

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB Prompt

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Now that you have root access, you can change the root password.

Step 4: Changing the Root Password


Now we can actually change the root password.

For MySQL 5.7.6 and newer as well as MariaDB 10.1.20 and newer, use the following command:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

For MySQL 5.7.5 and older as well as MariaDB 10.1.20 and older, use:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Make sure to replace new_password with your new password of choice.

Note: If the ALTER USER command doesn't work, it's usually indicative of a bigger problem. However, you can try UPDATE ... SET to reset the root password instead.

[IMPORTANT] This is the specific line that fixed my particular issue:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

Remember to reload the grant tables after this.

In either case, you should see confirmation that the command has been successfully executed.

Query OK, 0 rows affected (0.00 sec)

The password has been changed, so you can now stop the manual instance of the database server and restart it as it was before.

Step 5: Restart the Database Server Normally

The tutorial goes into some further steps to restart the database, but the only piece I used was this:

For MySQL, use: $ sudo systemctl start mysql

For MariaDB, use:

$ sudo systemctl start mariadb

Now you can confirm that the new password has been applied correctly by running:

$ mysql -u root -p

The command should now prompt for the newly assigned password. Enter it, and you should gain access to the database prompt as expected.


You now have administrative access to the MySQL or MariaDB server restored. Make sure the new root password you choose is strong and secure and keep it in safe place.

[Solved] How to solve MySQL error code: 1062 duplicate entry , This section lists some errors that users frequently encounter when running MySQL programs. Although the problems show up when you try to run client  Introduction to MySQL SHOW ERRORS statement The SHOW ERRORS is a diagnostic statement that displays information for errors. The SHOW ERRORS is similar to the SHOW WARNINGS except that it shows only errors, not warnings and notes.

For Ubuntu/Debian users

Run the following to connect as root (without any password)

sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf

If you don't want to add --defaults-file each time you want to connect as root, you can copy /etc/mysql/debian.cnf into your home directory:

sudo cp /etc/mysql/debian.cnf ~/.my.cnf

and then:

sudo mysql

What is error code: 1290 and how to fix it., 3.1 Server Error Message Reference. The MySQL server writes some error messages to its error log, and sends others to client programs. Example server-​side  Errors coming back from the MySQL database backend no longer issue warnings. Instead, use mysql_error() to retrieve the error text.

After trying all others answers, this it what finally worked for me

sudo mysql -- It does not ask me for any password

-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';

I found the answer in this post :

MySQL 8.0 Reference Manual :: B Errors, Error Codes, and , The MySQL client library takes errors received from the server and makes them available to the host client program. Client-side error messages  In PHP, I am trying to execute a long MySQL query that depends on the user input. However, my query fails with the following message, "Query Failed". Actually I have printed this message whenever

MySQL 8.0 Reference Manual :: B.4.2 Common Errors , Here is an example client error message, as displayed by the mysql client: shell> mysql -h no-such-host ERROR 2005 (HY000): Unknown MySQL server host  By default, mysqld produces error messages in English, but they can be displayed instead in any of several other languages: Czech, Danish, Dutch, Estonian, French, German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Norwegian-ny, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, or Swedish. This applies to messages the server writes to the error log and sends to clients.

MySQL 8.0 Reference Manual :: B.1 Error Message , 12 most common MySQL errors you should be aware of. By. Amey Varangaonkar​. -. April 30, 2018 - 2:00 am. 0. 4491. Red light for cyclists. 8 min read. Sorry, you can't reply to this topic. It has been closed. Content reproduced on this site is the property of the respective copyright holders.

MySQL 8.0 Reference Manual :: B.3.2 Client Error , Errors coming back from the MySQL database backend no longer issue warnings​. Instead, use mysql_error() to retrieve the error text. Note that this function only  mysql> SELECT i FROM t INNER JOIN t AS t2; ERROR 1052 (23000): Column 'i' in field list is ambiguous mysql> SELECT * FROM t LEFT JOIN t AS t2 ON i = i; ERROR 1052 (23000): Column 'i' in on clause is ambiguous

  • Possible duplicate of Access denied for user 'root'@'localhost' (using password: YES) (Mysql::Error)
  • @clearlight Is not same question, this post is a problem with mysqladmin win super privilegies into mysql, the other post is a problem with a simple connection from socket.
  • Try remove if exists ~/.my.cnf file.
  • I know this is old, but want to say this for future visitors. Don't enter your mysql password, especially for root, in the command itself, or it will be stored in your shell history. Just leave the -p option by itself and mysql will prompt for a password.
  • Hello, I had the same problem. I did the above, and it solve the problem, but everytime I reboot CentOS, I need to do all of the steps again (I got the message:Access denied for user 'root'@'localhost' (using password: NO) - when run the command mysql (or any sql command) and I do again and again all over as above at each reboot.
  • Too bad that this does not work with MariaDB: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'' at line 1
  • I found this to work @PhilippLudwig set PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); I did this after step 5. Here is how my command prompt output looked: MariaDB [(none)]> MariaDB [(none)]> set PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); Query OK, 0 rows affected (0.00 sec)
  • For step 3 restart MariaDB: I found the following works: sudo systemctl restart mariadb
  • Some may find the file in /etc/mysql/my.cnf
  • I'm unable to do this... "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near...".
  • This answer worked, I accidentally added is not useful answer vote, excuse me!