Introduction
This error may be due to one of the following reasons:
- Due to changes in MySQL 5.7 / MySQL 8+, you cannot log into phpMyAdmin using the root account.
See section: MySQL 5.7 / MySQL 8+
- You have forgotten your root password.
See article: How To Reset the MySQL Root Password
- The
host
value for root is preventing access via phpMyAdmin.
See article: Understanding MySQL Users and Hosts
- You are trying to log into phpMyAdmin using an account other than root but are getting an error “Access denied for user (using password: YES)”.
See article: MySQL Rejecting Correct Password
- If using MySQL 5.6 and below
See section: MySQL 5.6 and below
MySQL 5.7 / MySQL 8+
In MySQL 5.7 (released Oct 2015) and MySQL 8, the root MySQL user is set to authenticate using the auth_socket
or caching_sha2_password
plugin rather than with mysql_native_password
. This will prevent programs like phpMyAdmin from logging in with the root account.
You can either create a new MySQL superuser just for phpMyAdmin or you can try changing the authentication method for root. Personally I would recommend creating a new superuser as it’s not a good idea to allow the root account to be accessed via phpMyAdmin if accessible over the internet.
Choose from one of the two following methods:
Method 1: Create a New Superuser for phpMyAdmin
In terminal, log in to MySQL as root
. You may have created a root password when you installed MySQL for the first time or the password could be blank. If you have forgotten your root password, you can always Reset the MySQL Root Password.
sudo mysql -p -u root
Now add a new MySQL user with the username of your choice. In this example we are calling it pmauser
. Make sure to replace password_here
with your own. You can generate a strong password here.
The command below will create a new user called pmauser
(call this what you like) which can access the MySQL server from localhost
with the password password_here
.
CREATE USER 'pmauser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password_here';
Now we will grant superuser privilege to our new user pmauser
.
GRANT ALL PRIVILEGES ON *.* TO 'pmauser'@'localhost' WITH GRANT OPTION;
You should now be able to access phpMyAdmin using this new user account.
If you are getting an error for this new user “Access denied for user (using password: YES)”, please read this article.
If you are getting an error “Failed to set session cookie. Maybe you are using HTTP instead of HTTPS”, please read this article.
Method 2: Change root Authentication Method
In order to log into phpMyAdmin as your root MySQL user, you will need to switch its authentication method from auth_socket
or caching_sha2_password
to mysql_native_password
. Note: You can try using caching_sha2_password
, but it’s known to causes issues with some versions of PHP.
Open up the MySQL prompt from your terminal:
sudo mysql
If you are getting an error here “ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)”, try the command below and enter your MySQL root password.
sudo mysql -p -u root
Once logged into MySQL, run the following query.
SELECT user,plugin,host FROM mysql.user WHERE user = 'root';
Output:
+------+-------------+-----------+
| user | plugin | host |
+------+-------------+-----------+
| root | auth_socket | localhost |
+------+-------------+-----------+
1 row in set (0.00 sec)
Above we can see that the plugin for the root account is set to auth_socket
. This may also say caching_sha2_password
. You need to change this to mysql_native_password
. Also, the host value should be set to localhost
or %
. If it’s set to anything else, you may not be able to log into phpMyAdmin with root. See: Understanding MySQL Users and Hosts
Run the following query to change the plugin value to mysql_native_password
. Make sure to replace enter_password_here
with your own. Click here if you need to generate a new password.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'enter_password_here';
Flush privileges.
FLUSH PRIVILEGES;
You should now be able to log into phpMyAdmin using your root account.
MySQL 5.6 and below
In MySQL 5.6 and below, you should be able to log into to phpMyAdmin using the root account. However, if you still can’t log in, it may be due to one of the following reasons:
- You have forgotten your root password.
See: Reset the MySQL Root Password. - The
host
value for root is preventing access via phpMyAdmin.
See: Understanding MySQL Users and Hosts - You are trying to log into phpMyAdmin using an account other than root but are getting an error “Access denied for user (using password: YES)”
See: MySQL Rejecting Correct Password
You could also create a new user for phpMyAdmin by following the step for MySQL 5.7 and above as the commands are the same.
Upgrading phpMyAdmin
While you’re here, you may be interested in an article I wrote on manually upgrading phpMyAdmin. Sometimes the repositories can be slow to include the latest version of phpMyAdmin, causing compatibility issues, so make sure you have the latest version:
MySQL Backups
Are you backing up your MySQL databases? I’ve written a detailed guide on how to automatically dump and archive databases using mysqldump
and cron
:
Let me know if this helped. Follow me on Twitter, Facebook and YouTube, or 🍊 buy me a smoothie.
the First mode worked for me, thanks!
Hi,
I got an error when executiong this:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘enter_password_here’;
ERROR 1064 (42000): You have an error in your SQL syntax;
Any help, please
Regards
Worked smoothly. Thanks a lot.
Merci j’ai essayé et ça marche
haha thats work. thank you
You need to also provide the ‘with grant option’ if you use method 1.
GRANT ALL PRIVILEGES ON . TO ‘pmauser’@’localhost’ WITH GRANT OPTION;
Otherwise, pmauser can not create new users and grant them options to other databases.
Thanks. Article updated.
Thank you so much. You save my world. You are genius. (^_^)
RODADNDO AQUI PERFEITAMENTE NO LINUX MINT 20
Ayy bro just wanted to say i was really stuck, really appreciate you. Thanks a bunch man. Much love. Crazy world we live in today. Wish people would just come together.
Thank you, work for me on ubuntu 20.10
Thank you very much. There is many instruction over internet, but combine with this instruction, its help my frustation. Thank you very much
thank u
you can use this to change phpmyadmin privileges
GRANT ALL PRIVILEGES ON . TO ‘phpmyadmin’@’localhost’;
THANK YOU !!!
Thanks, works perfectly.
Thanks a lot. Your instructions help me go through the problem solving.
Super solution! thank you very mutch! After weeks finaly sql is ( allmost ) fixed. Now I can access myphpadmin againand I hope I can restore my old database. Thank you very mutch for sharing this solution
Method 2 didn’t work for me. So I’ve found another one that worked.
mysql> UPDATE mysql.user SET plugin = ‘mysql_native_password’, authentication_string = PASSWORD(‘changeme’) WHERE User = ‘root’;
mysql> FLUSH PRIVILEGES;
Thanks It’s working now…. Thanks a lot.. 🙂
double quote was needed for anyone who is stuck here
UPDATE mysql.user SET plugin = “mysql_native_password”, authentication_string = PASSWORD(“changeme”) WHERE User = “root”;
Thank you! You are generated really good and valueable content and helped me a lot.
👍
Merci
bonjour je suis désolé de te deranger mais jai beau chercher et tout essayer sa ne marche toujour pas..
thx bro i love you greetings from Turkey
Great awesome..thx u so much
Thanks so much!!!
This document is very helpful for me.
Thanks
Thank you, work for me on ubuntu 18.04 🙂
article did not help!
ubuntu 18.04 + mySQL 5.7.29
Thank you so much for this. I’m a noob and been banging my head for an hour on a NEW FREAKING installation. Your rage comig made it all that much better.
sudo thanks
works like a charm thanks!
Merci 🙂
TOP, Thank you
thank you you really solved my problem
Thank you it’s help me 🙂
Worked!!! Thank you very much!
Thank you!
Thanks a lot dude. 😀
Muito obrigado!
Resolveu de vez o meu problema no MySQL 5.7.
Thank you Mate!!!
I’ve spend about 2 hours trying everything and everyforum and no one could give me a solution.
Thanks!!!
super, Thank you – Dzięki bardzo 🙂
Thank you
thank youuu <3 <3 <3
Yep, like a charm 🙂
Thank you very much, you fine sir!
thanks very much
thanks works great
Thanks so much!
Works well with phpmyadmin and mariadb ! Great, thanks !
It works perfectly thanks
Thank you very much! <3
thanks. it’s very helpfull!
wow, thx dude, best help in the whole internet
It worked! Thank you so much.
IT worked. Thank you
Hi dear
thanks a lot for your advice.
Happy new year
Thanks guy… well done!
muchas gracias, me solucionó el problema
¡Genial!
I’ve been looking for two days for an answer. One post even suggested I completely uninstall MySQL and start over. This one worked perfectly. Apparently each version of MySQL has their own syntax. Mine never recognized the syntax from the other posts but took this one completely. I now have a password for my root as well. Thank You!
Thanks 🙂 You saved me
Keep It up
You rock you saved my day !
Awesome information. Saved me a lot of time as a beginner. Thank you so much.
I can’t believe! I spend all day working on this. Thank you!
Thanks so much for the clear guidance, simple steps given and finally…… phpmyadmin running smoothly in my Raspbian Pi.
Many many thanks.
Yesssssss, so clean, so easy, works beautifully.
Perfect, worked like a charm , always found mysql s trial to sort out on debian (now raspbian)
thanks, you save me brother
👊😎
I love you. And I’m not gay. haha
Excelente, gracias por la ayuda!!!
De nada tío. 😉
Thanks a bunch!
Glad it helped 👍
thanx for helping
👍
THANK U SO NUCH IT WORK !!!!!!!!!!!!!!!
I always can login as root before , but now in Ubuntu 18.04 it fail it not work.
Great a new user work fine 🙂
🙂
Thanks!
Soluzione ovvia ma non ci avevo pensato!
Grazie!
Prego!
hey