首页 >数据库 >mysql教程 >为什么我会收到 MySQL 错误 1698(访问被拒绝)以及如何修复它?

为什么我会收到 MySQL 错误 1698(访问被拒绝)以及如何修复它?

Barbara Streisand
Barbara Streisand原创
2024-12-25 13:12:12469浏览

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

在 MySQL 登录期间处理错误 1698

用户可能会遇到 错误 1698 (28000): 用户 'root'@ 的访问被拒绝'localhost' 当尝试使用 root 用户登录 MySQL 数据库时。此错误经常在 Ubuntu 等系统上遇到,其中 MySQL 默认使用 Unix auth_socket 插件进行身份验证。

背景: auth_socket 插件依赖系统用户凭据进行身份验证。通过查询 mysql.user 表,您可以验证 root 用户是否已使用此插件注册:

SELECT User, Host, plugin FROM mysql.user;

可能的解决方案:

选项 1 : 配置root用户使用mysql_native_password插件
这个方法涉及到设置root用户使用更传统的 mysql_native_password 插件:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

选项 2:创建新的数据库用户(推荐)
另一种方法是使用您的系统用户名创建新的数据库用户。这提供了一个更易于管理和安全的选项:

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

请注意,使用选项 2,您将使用系统用户名连接到 MySQL:

mysql -u YOUR_SYSTEM_USER

其他注意事项:

  • 在 MySQL 版本 8.x.x 中, auth_socket 插件可能已被 caching_sha2_password 替换。请查阅 MySQL 文档以了解适当的身份验证插件和登录方法。
  • 在 Debian 9 (Stretch) 中,auth_socket 插件已重命名为 unix_socket。相应地调整 SQL 命令。

以上是为什么我会收到 MySQL 错误 1698(访问被拒绝)以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn