当前位置:网志问答 > 医疗健康 > MySQL数据库密码恢复笔记
已有回答

MySQL数据库密码恢复笔记

网志问答在浏览76次收到腾讯网的热心用户ddd883p9关于朱自清MySQL数据库密码恢复笔记的提问,关于这些疑难问题,进行了深入的分析。得到了网志问答众多网友的支持,得到了如下解决方案,摘录了部分优质回答,如对此有任何好的意见,欢迎大家进行探讨共同解决!

详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!

本页链接:http://www.oxrm.com/question/1462878320720706

AD728-90
满意答案

第1个优秀答案:

前言:在LINU投议认甚X下装了MYSQL问答,刚装完的时候把ROOT空密码改了,当时也改了个好记的密码,没想到过了一个小时就忘记了,于是有了这篇交恢复密码过程笔记因为MySQL密码存储于数据库mysql中的user表中所以只需要将我window称容菜间错曾垂里各s2003下的MySQL中的user表拷贝过来覆盖掉就行了在c:mysqldatamysql(linux则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文到举普厂善片台诉件user.frm、user.MYD、user.MYIuser.frm//user表样式文件user.MYD//user表数据文件user.MYI责说影压消消//user表索哪烟渐作引文件为保险起见,三个都拷贝过来,不过其实如果之前在要恢复的那个M次么似措格投足转良儿请ySQL上没有更改过表结构的话,只要拷贝user.MYD就行了然后#客她龙划火坏受./etc/rc.d好载示备项装动居图充/init.d/mysqlstop#./etc/rc.d/init.d/mysqlstart#mysql-uroot-pXXXXXX好了,可以用windows2003下mysql密码登陆了mysql>usemysqlmysql>updateusersetPassword=PASSWORD('xxxxxx')whereUser='root';这时候会出错,提纸修左改务示user表只有读权限我分析了一下原因,只这样的北田,因为user.*文件的下画广权限分配是windows2003下的,在windows2003下我ls-l一看权限是666在linux下我一看,拷过来后权限变成了600(其实正常情况下600就行了,只不过这把明愿钟整我势氢大养里的文件属主不是mysql,拷操城技过来后的属主变为了root,所以会出现权限不士强菜南高不弱亮既够,这时候如果你改成权限666则可以了,当然这样不好,没有解决问题的实质),在/var/lib委克迅般复企免思/mysql/mysql/下福营体听ls-l看了一下再#chown-Rmysql:mysqluser.*#chmod600user.*//OK,DONE重起一下MYSQL重新连接mysql>usemysqlmysql>updateusersetPassword=PASSWORD('xxxxxx')whereUser='root';mysql>FLUSHPRIVILEGES;有一点值得注意:如果你windows下mysql如果是默认配置的话,注意要还要执行mysql>deletefromuserwhereUser='';mysql>deletefromuserwhereHost='%';mysql>FLUSHPRIVILEGES;好了,到这里恢复密码过程就完成了这个方法么就是有点局限性,你必须也具备另外的user表文件其他还有几种方法其它方法一(这个是网上流传较广的方法,mysql中文参考手册上的)1.向mysqldserver发送kill命令关掉mysqldserver(不是kill-9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。killall-TERMmysqld你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。2.使用`--skip-grant-tables'参数来启动mysqld。(LINUX下/usr/bin/safe_mysqld--skip-grant-tables,windows下c:mysqlbinmysqld--skip-grant-tables)3.然后无密码登录到mysqldserver,>usemysql>updateusersetpassword=password("new_pass")whereuser="root";>flushprivileges;你也可以这样做:`mysqladmin-hhostname-uuserpassword'newpassword''4.载入权限表:`mysqladmin-hhostnameflush-privileges'或者使用SQL命令`FLUSHPRIVILEGES'5.killall-TERMmysqld6.用新密码登陆其它方法二直接用十六进制编辑器编辑user.MYD文件不过这个里面我要说明一点,我这里编辑的时候发现个问题,加密的密码串有些是连续存储的,有些的最后两位被切开了,后两位存储在后面其他地方.这一点我还没想明白.还有注意一点就是编辑的是加密过的密码串,也就是说你还是需要另外有user表文件。这种方法和我最上面介绍的方法的区别在于,这种方法直接编辑linux下的user表文件,就不需要重新改文件属主和权限了


希望以上的回答,能够帮助你。更多关于MySQL数据库密码恢复笔记的知识及相关经验请访问经验知识https://www.5058.cn/,能够帮助你解决更多的问题,学习更多的经验。
AD160-600