Home > Database > Mysql Tutorial > Why Does MySQL Return 'Access Denied for User 'root' with No Privileges,' and How Can I Fix It?

Why Does MySQL Return 'Access Denied for User 'root' with No Privileges,' and How Can I Fix It?

Susan Sarandon
Release: 2024-12-19 14:22:09
Original
964 people have browsed it

Why Does MySQL Return

Access Denied for User 'root' with No Privileges: Delving into the Root Cause

This commonly encountered error, "Access Denied for User 'root'@'localhost' (using password: YES) - No Privileges?," is not to be taken lightly. It effectively blocks administrators from accessing crucial database operations. The underlying issue often stems from the root user's schema privileges being stripped, rendering them powerless.

Connecting the Dots: MySQL 5.7 and Socket Connections

For MySQL versions 5.7 and above, it's worth noting that socket connections are enabled by default. This means that using "sudo mysql" is sufficient for establishing a connection. However, running "SHOW GRANTS FOR root;" may reveal that there are no defined grants for the 'root' user.

Reclaiming Root Privileges

To restore root access, the following steps can be taken:

  1. Identifying the Authentication Plugin: Run the query "SELECT user, authentication_string, plugin, host FROM mysql.user;" to determine the authentication plugin used for the root user. In most cases, it will be "auth_socket."
  2. Switching to Native Password Authentication: For root to connect using a password, update the "authentication_string" value in the mysql.user table with the command "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';".
  3. Refreshing Privileges: Execute "FLUSH PRIVILEGES;" to refresh the privilege settings.
  4. Confirming Changes: Rerunning "SELECT user, authentication_string, plugin, host FROM mysql.user;" should now show that the root user is using "mysql_native_password" authentication.

Additional Considerations

In the case of MariaDB, the command "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');" should be used to set the password.

This resolution process assumes that the "sudo mysql_secure_installation" command has been successfully run prior to encountering the access denied error. If that command has not been completed, running it first is recommended.

The above is the detailed content of Why Does MySQL Return 'Access Denied for User 'root' with No Privileges,' and How Can I Fix It?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template