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

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

方法 1: 使用 sudo 登录 MySQL

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

sudo mysql -u root

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

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

  1. 使用 sudo 登录 MySQL

    sudo mysql -u root
    
  2. 切换到 mysql 数据库

    USE mysql;
    
  3. 修改 root 用户的认证方式

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
    
  4. 刷新权限

    FLUSH PRIVILEGES;
    
  5. 退出 MySQL

    EXIT;
    

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

mysql -u root -p

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

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

  1. 停止 MySQL 服务

    sudo systemctl stop mysql
    
  2. 以跳过权限表的模式启动 MySQL

    sudo mysqld_safe --skip-grant-tables &
    
  3. 登录 MySQL

    mysql -u root
    
  4. 重置 root 用户的密码

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    
  5. 退出 MySQL

    EXIT;
    
  6. 停止 MySQL 安全模式

    sudo mysqladmin -u root -p shutdown
    
  7. 重新启动 MySQL 服务

    sudo systemctl start mysql
    

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

mysql -u root -p
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐