Fix MySQL Login issue with root user, #1698: Access denied for user ‘root’@’localhost'(MySQL 5.7)
MySQL has been changed its security model from version MySQL 5.7, You can’t log in with root from now by an application such as phpMyAdmin, WordPress, Magento, OpenCart or any others built by PHP which required use function
mysqli_real_connect(), because these applications will not be able to use `root` as
sudo mode, you must use root
sudo mode to login using terminal.
However, I’m describing below the simplest, secure and permanent way. Just create a new user at MySQL and grant required privileges.
Solution 1. Connect to MySQL with terminal
sudo mysql --user=root mysql
//place your MySQL password
Solution 2. Create a user to use in applications including phpMyAdmin, WordPress, Magento, OpenCart, Laravel or your own Application
Run the following commands (replacing
your_password by whatever you want as the password):
CREATE USER 'mysql_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'mysql_user'@'localhost' WITH GRANT OPTION;
Now try to connect your application, hopefully, it’ll be fixed.
Solution 3. allow remote connections (Unsafe Method)
Note: this is really a security concern for your server.
It will allow login via remote connections (replace
your_password by your password which you used in solution #2 )
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
Solution 4. Update your MySQL login credential in your application
Hopefully, it’s enough to fix mysqli_real_connect(): (HY000/1698): Access denied for user ‘root’@’localhost’ for MySQL 5.7