在 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 错误 1698(访问被拒绝)以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!