MySQL的root密码忘记怎么办 修改root密码的方式

如果哪天你忘记了线上MySQL数据库的root密码,怎么办

如果哪天你忘记了线上MySQL数据库的root密码,怎么办?

大家往往会想到skip-grant-tables参数,具体步骤如下:

大家往往会想到skip-grant-tables参数,具体步骤如下:

1.
关闭MySQL数据库,因为root密码忘记了,mysqladmin无法使用,此时,只能通过kill
pid关闭程序。

1.
关闭MySQL数据库,因为root密码忘记了,mysqladmin无法使用,此时,只能通过kill
pid关闭程序。

在这里,科普一下kill 和kill -9的区别

在这里,科普一下kill 和kill -9的区别

默认参数下,kill
发送SIGTERM信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。kill
-9
发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理所以,万不得已,不要通过kill
-9杀掉进程,这可能导致MySQL数据库的物理结构损坏,无法重新启动。

默认参数下,kill 发送SIGTERM信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理
  1. 在my.cnf文件[mysqld]部分添加skip-grant-tables参数

  2. 登录数据库,修改root账户的密码

所以,万不得已,不要通过kill
-9杀掉进程,这可能导致MySQL数据库的物理结构损坏,无法重新启动。

以下是修改root密码的三种方式

  1. 在my.cnf文件[mysqld]部分添加skip-grant-tables参数

  2. 登录数据库,修改root账户的密码

1 mysql set password for ‘root’@’localhost’=password(‘123’);
无需刷新权限表

以下是修改root密码的三种方式:

2 mysql update mysql.user set password=password(“456″) where user=”root”
and host=”localhost”;

    1> mysql> set password for ‘root’@’localhost’=password(‘123’);
无需刷新权限表

mysql flush privileges;

    2> mysql> update mysql.user set password=password(“456″) where
user=”root” and host=”localhost”;

3 # mysqladmin -u root password “123”

         mysql> flush privileges;

  1. 关闭数据库,注释掉skip-grant-tables参数,重新启动数据库。

    3> # mysqladmin -u root password “123”

上面这种方式虽然不错,但是有个问题,你必须重启数据库,对于线上环境,这可能是不被允许的。

  1. 关闭数据库,注释掉skip-grant-tables参数,重新启动数据库。

下面来谈谈另一种方法,有点“黑暗科技”的味道

 

这个方法利用的是mysql.user表还是MyISAM引擎的特性。

上面这种方式虽然不错,但是有个问题,你必须重启数据库,对于线上环境,这可能是不被允许的。