mysql.user表重置密码后出现表损坏问题

Posted 27floor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql.user表重置密码后出现表损坏问题相关的知识,希望对你有一定的参考价值。

  首先是发现了mysql数据库无论输入什么密码,都会直接进入数据库,没有验证。接下来开始入坑:

  1  知道是因为my.ini文件中有    skip-grant-tables      可是当时不知道密码忘记了还是user表已经出现了异常,密码一直错误。

  2  第二步,修改密码,可是mysql版本是5.7,按照password无法修改密码。于是直接在可视乎里加了一个password列,噩梦出现,password倒是加上了,密码列也修改成功了。skip也删除了,mysql也进去了,可是就是无法使用数据库,必须让修改表密码,重置密码。

  3  密码每次重置,都会出现另外一个错误,表结构已经损坏,无法操作。这时候看到了要更新mysql可能可以解决问题,可是看网上更新都是需要密码的,这时候密码已经废了,彻底gg。

  4    还没gg,接下来继续把skip-grant-tables加上,数据库倒是能继续进去了,可是还是想做到只能密码进入,经历了数次循环测试之后终于决定删除user表。然后利用网上生成user表,还不行,某些东西不匹配,再次删除user表。

  5  终于,在这时候,看了这个,--secure-file-priv is set to NULL. Operations related to importing and export...   ,

    在无密码情况下,mysql_upgrade,直接更新数据库,数据表自动生成。

    而且其中建议不要将数据放在mysql的数据库中,自己新建数据库,防止数据库损坏修复时麻烦,就像以前文件不放在c盘一样。

  6  但是此时还有一个问题,就是更新后的数据表并没有权限,于是又有一个很全的博客,恢复mysql 中root 用户的所有权限  言简意赅,按照步骤一个字不用修改就完成了数据库实现user更新和修改。

  总结,数据表损坏,一,更新。 二 赋予权限,三,只通过密码,这时把 skip-grant-tables注释了

  

#更新数据表,以及版本信息不对应
mysql_upgrade  

更改root权限
1停止mysql服务器。使用skip-grant-tables 登陆。

2 手动修改用户的权限。使其可以设置权限。
UPDATE mysql.user SET Grant_priv=Y, Super_priv=Y WHERE User=root;

3 刷新缓冲区
FLUSH PRIVILEGES;

4 设置权限
GRANT ALL ON *.* TO root@localhost;

5查看权限
select * from mysql.user\G

 

  

以上是关于mysql.user表重置密码后出现表损坏问题的主要内容,如果未能解决你的问题,请参考以下文章

Prestashop 迁移 - URL 损坏、重定向错误,并且无法重置管理员密码/访问后端办公室

密码重置后端功能

如何让mssql 某个表 重置表ID? 或者从某个数字开始。。。

在没有数据库表的情况下通过电子邮件重置密码

Parse Server 电子邮件中的链接已损坏(验证帐户、重置密码...)

windows下重置mysql的root密码方法介绍(转)