我知道有很多关于类似问题的帖子,人们无法使用 root 连接,需要重置密码才能重新获得访问权限,但就我而言,重置密码不是问题。我只是无法登录,即使使用正确的密码。
几个月前我注意到我突然无法以 root 身份登录,但我把这个问题放在一边,因为我可以通过另一个用户帐户访问,这足以满足我的需求,至少暂时如此,但现在我真的需要能够使用 root。我使用的是 Windows Server 2016 和 MySQL 5.5.45
这是我为解决问题所做的事情
- 停止 mysql 服务
- 重新启动 mysql 服务并启用 skip-grant-tables
- 在命令行上,以 root 身份登录,无需密码
- 使用mysql;
- 更新用户设置密码 = PASSWORD ('MyNewPassword') 其中用户 ='root';
- 刷新权限;
根据互联网的说法,这应该可以解决问题,而且它确实有效,因为 mysql 报告有 1 行已被更改。因此我退出了 mysql,并尝试使用 root 和我的新密码重新登录。
我仍然得到错误 1045(28000):拒绝用户“root”@“127.0.0.1”访问(使用密码:是)
我还尝试了上述操作的变体,即在刷新权限之前添加 UPDATE user SET plugin=""; 和 UPDATE user SET plugin="mysql_native_password";,但这并没有什么区别。
我还尝试通过传入一个 init 文件来启动 mysql,按照这些说明,其中包含:
UPDATE mysql.user SET Password=PASSWORD('MyNewPassword') WHERE User='root';
FLUSH PRIVILEGES;
这实际上是我尝试的第一件事,但不仅没有用,命令行也再也没有出现。它只是挂起了,所以我不得不终止它并寻找其他解决方案。
所以问题是,如果密码不是问题,那么是什么原因导致我拒绝 root 用户访问?