MySQL 错误: '访问被拒绝用户'root'@'localhost'

新手上路,请多包涵

考虑:

 ./mysqladmin -u root -p** '_redacted_'

输出(包括输入密码):

输入密码:

mysqladmin:连接到“localhost”的服务器失败错误:

‘用户’root’@‘localhost’的访问被拒绝(使用密码:YES)’

我怎样才能解决这个问题?

原文由 Harsh Trivedi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 947
2 个回答
  1. 打开并编辑 /etc/my.cnf/etc/mysql/my.cnf ,具体取决于您的发行版。
  2. 在 下添加 skip-grant-tables [mysqld]
  3. 重启 MySQL
  4. 您现在应该可以使用以下命令登录 MySQL mysql -u root -p
  5. 运行 mysql> flush privileges;
  6. 通过 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; 设置新密码
  7. 返回 /etc/my.cnf 并 删除/注释 skip-grant-tables
  8. 重启 MySQL
  9. 现在您将可以使用新密码登录 mysql -u root -p

原文由 Kishore Venkataramanan 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Arch Linux 上

包: mysql 8.0.29-1

什么对我有用:

  1. 编辑 my.cnf 文件,通常可以在 /etc/mysql/my.cnf 找到,并在文件的底部/末尾附加这个 skip-grant-tables

  2. 通过调用 sudo systemctl restart mysqld 重启mysql服务

  3. 通过调用 sudo systemctl status mysqld 确保 mysql 服务已正常启动

  4. 通过调用 mysql -u root -p 使用“root”登录到 mysql

  5. 通过调用 flush privileges; 刷新权限

  6. 通过 CREATE USER 'root'@'localhost' IDENTIFIED BY 'rootpassword'; 创建新用户

  7. (如果您打算将此数据库与 PHP 一起使用),则应改为使用 CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

  8. 通过依次调用以下命令检查您的更改是否已反映在 db 中:

    • use mysql;
    • SELECT User, password_last_changed FROM user;
  9. 退出 mysql 控制台并通过编辑 my.cnf 文件注释/删除 skip-grant-tables (位置请参见步骤 1)

  10. 重启mysql服务(参考第2步和第3步)

就这样。

原文由 zep_ph 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题