不久前自学完完sql,下了mysql8.0.17,安装配置好后探索着,想着用root账户登上去能不能删除root账户呢,然后就想给自己一巴掌,,,
如何快速恢复root:
关闭mysql服务:win+R键键入services.msc,找到mysql服务,点击stop;
删除data文件夹及其文件:进入mysql文件夹,找到data文件夹并删除;
初始化mysql:再次进入services.msc,运行mysql服务;cmd窗口进入mysqlin文件路径,运行mysqld --initialize --console 结果类似如下:
2019-08-07T02:08:11.300849Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is
deprecated. Please use --explicit_defaults_for_timestamp server option (see doc
umentation for more details).
2019-08-07T02:08:11.724874Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-08-07T02:08:12.024891Z 0 [Warning] InnoDB: Creating foreign key constraint
system tables.
2019-08-07T02:08:12.056893Z 0 [Warning] No existing UUID has been found, so we a
ssume that this is the first time that this server has been started. Generating
a new UUID: 35611a71-b8b8-11e9-8e24-28d24409926b.
2019-08-07T02:08:12.064893Z 0 [Warning] Gtid table is not ready to be used. Tabl
e "mysql.gtid_executed" cannot be opened.
2019-08-07T02:08:12.076894Z 1 [Note] A temporary password is generated for root@
localhost: QTpg4Y!sh:dk
注意加粗语句中就有暂时生成的root账户密码;
cmd运行mysql:键入mysql -u root -p+root密码;注意:p是password的缩写,按上面的例子就应键入:mysql -u root -pQTpg4Y!sh:dk -p和密码一定要连在一起才有效,中间没有空格;
修改临时root密码:运行sql语句:alter user root@localhost identified by " root密码 ’ ; 注意:密码要包含在 英文单引号 ‘ ’ 中,不然无效报错,末尾分号 ;也要写。
查询是否成功:运行sql语句: select user from mysql.user; 成功显示root账户;
注意:本方法虽快捷有效,但会删除所有数据库文件,就是data文件夹里的数据库。其他什么添加skip-grant-tables来越过登录认证的试过,对于8.0.17版的无效了。