
以下的文章主要讲述的是在linux操作系统下装MySQL数据库之后,不小心把MySQL ROOT的密码弄丢或是在修改初始密码时,忘记了新的密码的实际解决方案,下面就是具体方案的描述,希望在你今后的学习中会有所帮助。
因为MySQL密码存储于数据库MySQL中的user表中所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了
在c:\MySQL\data\MySQL\(linux 则一般在/var/lib/MySQL/MySQL/)目录下有三个user表相关文件user.frm、user.MYD、user.MYI
user.frm //user表样式文件
user.MYD //user表数据文件
user.MYI //user表索引文件
为保险起见,三个都拷贝过来,不过其实如果之前在要恢复的那个MySQL上没有更改过表结构的话,只要拷贝user.MYD就行了
然后
好了,可以用windows 2003下MySQL密码登陆了
这时候会出错,提示user表只有读权限
我分析了一下原因,只这样的,因为user.*文件的权限分配是windows 2003下的,在windows 2003下我ls -l一看权限是666
在linux下我一看,拷过来后权限变成了600(其实正常情况下600就行了,只不过这里的文件属主不是MySQL,拷过来后的属主变为了MySQL root,所以会出现权限不够,这时候如果你改成权限666则可以了,当然这样不好,没有解决问题的实质),在/var/lib/MySQL/MySQL/下ls -l看了一下
再
重起一下MySQL
重新连接
有一点值得注意:如果你windows 下MySQL如果是默认配置的话,注意要还要执行
好了,到这里恢复密码过程就完成了
这个方法么就是有点局限性,你必须也具备另外的user表文件
其他还有几种方法
其它方法一(这个是网上流传较广的方法,MySQL中文参考手册上的)

1. 向MySQLd server 发送kill命令关掉MySQLd server(不是 kill -9),存放进程ID的文件通常在MySQL的数据库所在的目录中。
killall -TERM MySQLd
你必须是UNIX的MySQL root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。
2. 使用`–skip-grant-tables’ 参数来启动 MySQLd。 (LINUX下/usr/bin/safe_MySQLd –skip-grant-tables , windows下c:\MySQL\bin\MySQLd –skip-grant-tables)
3. 然后无密码登录到MySQLd server ,

你也可以这样做:
4. 载入权限表: `MySQLadmin -h hostname flush-privileges’ ,或者使用 SQL 命令`FLUSH PRIVILEGES’。
5.killall -TERM MySQLd
6.用新密码登陆
其它方法二
直接用十六进制编辑器编辑user.MYD文件
不过这个里面我要说明一点,我这里编辑的时候发现个问题,加密的密码串有些是连续存储的,有些的***两位被切开了,后两位存储在后面其他地方.这一点我还没想明白.还有注意一点就是编辑的是加密过的密码串,也就是说你还是需要另外有user表文件。这种方法和我最上面介绍的方法的区别在于,这种方法直接编辑linux下的user表文件,就不需要重新改文件属主和权限了
【编辑推荐】
mac 上怎么重置mysql的root的密码
1、编辑MySQL配置文件:windows环境中:%MySQL_installdir%\ //MySQL安装目录下的配置文件。 linux环境中:/etc/在[MySQLd]配置段添加如下一行:skip-grant-tables保存退出编辑。 2、然后重启MySQL服务windows环境中:net stop MySQLnet start MySQLlinux环境中:/etc/init.d/MySQLd restart3、设置新的ROOT密码然后再在cmd命令行下执行:MySQL -uroot -p MySQL要求输入密码时直接回车无需密码即可进入数据库了。 现在我们执行如下语句把root密码更新为 :update user set password=PASSWORD() where user=rootquit 退出MySQL。 4、还原配置文件并重启服务然后修改MySQL配置文件把刚才添加的那一行(skip-grant-tables)删除。 再次重起MySQL服务,即可二.修改MySQL的用户名和密码:(未证实)方法一:(适用于管理员或者有全局权限的用户重设其它用户的密码)进入命令行模式mysql -u root mysqlmysql> UPDATE user SET password=PASSWORD(new password) WHERE user=namemysql> FLUSH PRIVILEGESmysql> QUIT方法二:(应用同上,只是方法不同) mysql -u root mysqlmysql> SET PASSWORD FOR name=PASSWORD(new password)mysql> QUIT最后必杀技:mysqladmin -u root old password new password注:以上name请用你的用户名来替代,new password请输入你想要设置的密码。
几种破解MySQL数据库root密码的方法
方法二 使用mysqladmin,这是前面声明的一个特例。 mysqladmin -u root -p password mypasswd 输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。 把命令里的root改为你的用户名,你就可以改你自己的密码了。 Unix&Linux: 1.用root或者运行mysqld的用户登录系统; 2.利用kill命令结束掉mysqld的进程; 3.使用--skip-grant-tables参数启动MySQL Server shell>mysqld_safe --skip-grant-tables & 4.为root@localhost设置新密码 shell>mysqladmin -u root flush-privileges password newpassword 5.重启MySQL Server mysql修改密码 mysql修改,可在mysql命令行执行如下: mysql -u root mysql mysql> Update user SET password=PASSWORD(new password) Where user=’name’; mysql> FLUSH PRIVILEGES; mysql> QUIT 教你如何将MySQL数据库的密码恢复 因为MySQL密码存储于数据库mysql中的user表中,所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了。
linux下登录mysql密码有,怎么办
MySQL密码的恢复方法之一1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。 可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。 最安全的状态是到服务器的Console上面操作,并且拔掉网线。 2.修改MySQL的登录设置: # vi /etc/ 在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。 3.重新启动mysqld # /etc/init.d/mysqld restart( service mysqld restart )4.登录并修改MySQL的root密码mysql> USE mysql ; mysql> UPDATE user SET Password = password ( new-password ) WHERE User = root ; mysql> flush privileges ; mysql> quit5.将MySQL的登录设置修改回来 # vi /etc/ 将刚才在[mysqld]的段中加上的skip-grant-tables删除 保存并且退出vi。 6.重新启动mysqld # /etc/init.d/mysqld restart ( service mysqld restart )7.恢复服务器的正常工作状态将步骤一中的操作逆向操作。 恢复服务器的工作状态。 MySQL密码的恢复方法之二如果忘记了MySQL的root密码,可以用以下方法重新设置:1. KILL掉系统里的MySQL进程; killall -TERM mysqld2. 用以下命令启动MySQL,以不检查权限的方式启动; safe_mysqld --skip-grant-tables &3. 然后用空密码方式使用root用户登录 MySQL; mysql -u root4. 修改root用户的密码; mysql> update set password=PASSWORD(新密码) where User=root; mysql> flush privileges; mysql> quit 重新启动MySQL,就可以使用新密码登录了
发表评论