Dec
30
今日一个错手,把mysql里面user表中的root密码列改错了。里面有大量的数据,不可能重装啊。从网上找了些资料,发现恢复mysql的密码不难。
一、覆盖
因为Mysql密码存储于数据库mysql中的user表中,所以我们只要用已知密码的user表拷贝过来覆盖就行了。
红旗DC Server 4.1在/var/lib/mysql/mysql/目录下有三个user表相关文件user.frm、user.MYD、user.MYI。它们分别表示:
先备份一下就的文件,防止改错。然后把已经知道密码的mysql库中user表的三个文件拷贝过来。这时我们只要重启mysql服务就可以用已知的密码来访问Mysql数据库了。
现在我们可以用已知密码的来访问Mysql数据库了。
二、官方的方法
如果临时找不到已有的User表文件,那只能用官方的方法来做了。
1、向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录/var/lib/mysql中。
2、使用--skip-grant-tables参数来启动 mysqld。
路径不一定都一样,可以用locate找一下。
3、然后就可以无密码登录到mysqld server ,此时Mysql的密码和刚安装时一样,都是为空。现在我们可以使用mysqladmin来改变mysql的密码了。
4、载入权限表,使用下面的命令
5、使用新密码登陆即可
官方的方法有个好处,就是不会影响其他用户的权限。
一、覆盖
因为Mysql密码存储于数据库mysql中的user表中,所以我们只要用已知密码的user表拷贝过来覆盖就行了。
红旗DC Server 4.1在/var/lib/mysql/mysql/目录下有三个user表相关文件user.frm、user.MYD、user.MYI。它们分别表示:
引用
user.frm //user表样式文件
user.MYD //user表数据文件
user.MYI //user表索引文件
user.MYD //user表数据文件
user.MYI //user表索引文件
先备份一下就的文件,防止改错。然后把已经知道密码的mysql库中user表的三个文件拷贝过来。这时我们只要重启mysql服务就可以用已知的密码来访问Mysql数据库了。
service mysql restart
现在我们可以用已知密码的来访问Mysql数据库了。
二、官方的方法
如果临时找不到已有的User表文件,那只能用官方的方法来做了。
1、向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录/var/lib/mysql中。
# killall -TERM mysqld
2、使用--skip-grant-tables参数来启动 mysqld。
# /usr/bin/safe_mysqld --skip-grant-tables
路径不一定都一样,可以用locate找一下。
3、然后就可以无密码登录到mysqld server ,此时Mysql的密码和刚安装时一样,都是为空。现在我们可以使用mysqladmin来改变mysql的密码了。
#mysqladmin -u root -p password newpassword
4、载入权限表,使用下面的命令
# mysqladmin flush-privileges
5、使用新密码登陆即可
官方的方法有个好处,就是不会影响其他用户的权限。
1
2018/08/03 09:59
分页: 1/1 1