YiluPHP
这家伙很懒,什么都没有留下...

经验 Mysql 忘记root密码的解决方法

浏览数 193656 最后修改时间
skip-grant-tables
顾名思义,数据库启动的时候 跳跃权限表的限制,不用验证密码,直接登录。

注意:

这种情况只有在忘记root密码 不得已重启数据库的情况下使用的。现网环境慎用,需要重启数据库,并且安全性也比较难以保证。

1.修改配置参数

/etc/my.cnf

在[mysqld] 下面加上:

skip-grant-tables
配置项。

2.重启mysql

使得参数生效:

service mysqld restart

3.注意事项

此时所有用户登录当前数据库都是免密码的,所以此时数据库的安全性是非常低的。

4.修改密码

  1. 执行mysql命令进入mysql命令行
    #mysql
  2. 修改root用户密码
    MySQL> UPDATE mysql.user SET authentication_string=PASSWORD("newpdaaa") where USER="root";
    MySQL> flush privileges;
    MySQL> exit;
    注意:正常情况下修改用户密码的语句是
    UPDATE mysql.user SET password=PASSWORD("newpdaaa") where USER="root";
    因为我们跳过了权限,mysql数据库下已经没有password这个字段了,password字段需要改成authentication_string,否则会报错。
    ERROR 1054 (42S22): Unknown column 'password' in 'field list'

或者:grant all privileges on *.* to 'root'@'%' identified by 'root123' with grant option;
说明:此命令是为密码为 root 、IP(%)任意的 root 用户授权。(%:模糊查询,所有 IP 都可以,,可指定其他主机 IP;BY 后的 'root123' 为密码)

5.去掉参数

a.密码修改好了之后再将配置文件中 skip-grant-tables去掉或注释掉

b.再次重启数据库。

我来说说