回顾:因为MySQL
密码存储在数据库MySQL中的
用户表中。
因此,只需在我的Windows 2003的MySQL中
复制用户表并将其覆盖。
有三的用户表的相关
文件,user.frm,user.myd,user.myi在C:mysqldatamysql(Linux通常在/ var / lib / / / MySQL MySQL)
目录 user.frm / /用户表样式的
文本 因为MySQL密码存储在数据库MySQL中的用户表中。
因此,只需在我的Windows 2003的MySQL中复制用户表并将其覆盖。
有三的用户表的相关文件,user.frm,user.myd,user.myi在C: MySQL 数据 MySQL (Linux一般在/ var / lib / / / MySQL MySQL)目录
user.frm / /用户表样式文件
user.myd / /用户表
数据文件 user.myi / /用户表的索引文件
为保险起见,三份拷贝,但事实上,如果没有更改表结构对MySQL已经
恢复之前,只是复制user.myd。
然后#。
#。
# MySQL U P xxxxxx根
好的,你可以使用Windows 2003 MySQL密码
登录 使用mysql
MySQL >更新用户
设置密码,密码(xxxxxx)用户= 'root;
此时会出现一个
错误,
提示用户表只能读取
权限。
我分析了
原因,仅此而已,因为用户*文件的权限分配是Windows 2003,而在Windows 2003,我的L l一个视图是666
在Linux中我看到,复制后允许为600(实际上在正常
情况下,600就行了,但这里不是主MySQL文件,复制所有者到root,所以会有足够的权限,如果可以更改权限为666,那么当没有好的,没有实际问
题解决),下一步我又看了一遍。
# chown -R MySQL:MySQL用户*。
# chmod 600 *用户。
OK,完成了
回到MySQL
重新
连接 使用mysql
MySQL >更新用户设置密码,密码(xxxxxx)用户= 'root;
刷新权限;
有一点需要注意的是,如果您的Windows MySQL是
默认配置,请注意它。
用户>用户>;
从用户中
删除主机=%;
刷新权限;
那么,在这里恢复密码的过程已经完成
这个
方法有点有限,您必须有另一个用户表文件。
还有其他几种方法
其他方法之一(这是Internet上广泛使用的方法,在mysql
中文参考手册中)
1。发送kill
命令到mysqld
服务器
关闭mysqld服务器(不杀- 9),和
进程ID存储的文件通常在目录里的MySQL数据库位于。
长期killall mysqld
您必须是UNIX的根用户或
运行在您的服务器上的同一用户来
执行此
操作。
2。使用` -- skip-grant-tables'parameter
启动mysqld。( / usr /斌/ safe_mysqld --跳过授权表的linux下的C: MySQL 仓 mysqld -跳过授权表在Windows)
三.然后不用密码登陆到mysqld服务器,
>使用MySQL
>更新用户设置密码,密码(new_pass )用户=根;
>刷新权限;
。你能做到的,也` mysqladmin - H主机-用户password'new密码。
4。负荷的权限表:` mysqladmin - H主机冲洗特权,或`冲水特权使用SQL命令。
5.killall长期mysqld
6。使用新密码登陆
其他的方法
编辑user.myd文件直接与116波段编辑
但是这个我得说,我在这里编辑时间
发现了一个问题,加密的密码被存储在一些
连续的,一些最后的两个被切断后,两个存储在后面的其他地方。我不想明白。注意,编译是加密的密码字符串,也就是说你需要另一个用户文件,这种方法与我前面
介绍的方法的不同之处在于,这种方法在Linux下直接编辑用户表文件,因此不需要重新
修改文件。