实验介绍:MySQL的root密码丢失,无法登陆。需要重置其root密码
环境介绍:编译安装的MySQL
这篇博客介绍的找回 mysql root 密码是 mysql 基于编译安装的,如果是多实例下的mysql root 密码找回参数还有些许的不一样(如下)
主要区别在于停止 mysql 服务后的启动命令
编译安装的 mysql:mysqld_safe --skip-grant-tables --user=mysql &
多实例的 mysql:mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table &
在多实例环境下,需要加一个参数指明需要更改密码的数据库的 my.cnf 文件,在修改完密码后,可以通过 killall 命令将 mysqld 服务杀死,登陆时指定 mysql.sock
查看 mysql 版本
mysql --version
停止 mysql 服务
/etc/init.d/mysqld stop
加入参数启动 mysql 服务
mysqld_safe --skip-grant-tables --user=mysql &
命令行中输入 mysql,即可登陆
mysql
执行 mysql 命令,重置 msyql root 密码,并刷新权限
update mysql.user set password=password("123456") where user=‘root‘ and host=‘localhost‘;
flush privileges;
在执行完权限以后,通过 \q 退出 mysql 命令行。
因为启动时没有通过 mysqld 启动,所以需要执行 shutdown 命令来关闭 mysql 服务
mysqladmin -uroot -p123456 shutdown
启动 mysql 服务
/etc/init.d/mysqld start
通过刚才更改过的密码登陆 mysql 服务,密码修改成功
mysql -uroot -p123456
OK,mysql root 密码已经成功重置