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.userG

  

原文地址:https://www.cnblogs.com/27floor/p/11335429.html