由于缺少权限,用户 'root'@'localhost' 的访问被拒绝
问题:
用户尝试以 root 用户身份访问 MySQL 时会遇到“用户访问被拒绝” 'root'@'localhost' (using password: YES)”错误,表明root用户缺乏建立连接所需的权限。
解释:
默认情况下,MySQL 5.7 及更高版本主要依赖套接字身份验证进行本地连接。这意味着尝试通过命令行作为“sudo mysql”连接将不需要密码。但是,此身份验证方法不会授予 root 用户任何特定权限。
解决方案:
建立基于密码的连接并授予 root 用户权限:
- 运行“SELECT user,authentication_string,plugin,host FROM mysql.user;”查询当前用户配置。验证 root 用户的身份验证插件是否为“auth_socket”。
- 执行“ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';”语句将 root 用户的身份验证方法从套接字修改为本机。
- 运行“FLUSH PRIVILEGES;”命令以确保更改生效。
- 重复步骤 1 以确认 root 用户的身份验证插件已更改为“mysql_native_password”。
其他注意事项:
- “当前根密码”应替换为现有 root 用户的密码。
- 对于 5.7 之前的 MySQL 版本,身份验证方法可能是“caching_sha2_password”。在这种情况下,请使用“ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Current-Root-Password';”
- 对于 MariaDB 用户,可以使用以下命令为 root 用户设置密码:“SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');”
以上是为什么我在 MySQL 中收到'用户'root'@'localhost'访问被拒绝”的信息以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!