首先是发现了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
原文地址:https://www.cnblogs.com/27floor/p/11335429.html