ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘

ERROR 1698 (28000): Access denied for user 'root'@'localhost' 错误通常发生在使用 UNIX socket 认证的 MySQL 上,这意味着 MySQL 尝试使用系统用户认证而不是传统的用户名和密码认证。

以下是几种解决此问题的方法:

方法 1: 使用 sudo 登录 MySQL

如果 MySQL 使用 UNIX socket 认证,你可以通过 sudo 提升权限登录 MySQL:

bash 复制代码
sudo mysql -u root

方法 2: 修改 root 用户的认证方式

如果希望使用密码认证而不是 UNIX socket 认证,可以按照以下步骤修改 root 用户的认证方式:

  1. 使用 sudo 登录 MySQL

    bash 复制代码
    sudo mysql -u root
  2. 切换到 mysql 数据库

    sql 复制代码
    USE mysql;
  3. 修改 root 用户的认证方式

    sql 复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
  4. 刷新权限

    sql 复制代码
    FLUSH PRIVILEGES;
  5. 退出 MySQL

    sql 复制代码
    EXIT;

现在,你应该能够使用密码登录 MySQL:

bash 复制代码
mysql -u root -p

方法 3: 重置 root 用户的密码

如果你仍然无法访问 MySQL,可能需要重置 root 用户的密码:

  1. 停止 MySQL 服务

    bash 复制代码
    sudo systemctl stop mysql
  2. 以跳过权限表的模式启动 MySQL

    bash 复制代码
    sudo mysqld_safe --skip-grant-tables &
  3. 登录 MySQL

    bash 复制代码
    mysql -u root
  4. 重置 root 用户的密码

    sql 复制代码
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
  5. 退出 MySQL

    sql 复制代码
    EXIT;
  6. 停止 MySQL 安全模式

    bash 复制代码
    sudo mysqladmin -u root -p shutdown
  7. 重新启动 MySQL 服务

    bash 复制代码
    sudo systemctl start mysql

现在,你应该能够使用新密码登录 MySQL:

bash 复制代码
mysql -u root -p
相关推荐
杨云龙UP3 小时前
mysqldump逻辑备份文件恢复总结:全库恢复、单库恢复,一篇讲明白
linux·运维·服务器·数据库·mysql·adb
ybwycx3 小时前
mysql重置root密码(适用于5.7和8.0)
数据库·mysql·adb
zjshuster7 小时前
数据库分库分表的方法论与实操
数据库·adb
yige457 小时前
【MySQL】MySQL内置函数--日期函数字符串函数数学函数其他相关函数
android·mysql·adb
运维老曾14 小时前
Flink 1.20 使用自带jdbc source 操作步骤
android·adb·flink
祭曦念15 小时前
MySQL基础运维:日志基础之慢查询日志与错误日志 | 作用、配置与查看方法全实战
运维·mysql·adb
秋916 小时前
windows中下载并部署mysql-8.0.44-winx64详细过程
windows·mysql·adb
spring2997921 天前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
yoyo_zzm1 天前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
秋92 天前
Pentaho Kettle 9.4 实战:SQL Server 数据同步到 MySQL详细手册,附详细手册
android·adb·数据库同步