
实际工作中,用户忘记密码的情况时不时会发生。如果一般的用户忘记了密码,可以使用root用户登录,再使用alter user命令重置用户的密码,但如果忘记了root用户的密码就比较麻烦,本节将介绍两种重置root用户密码的方法。
使用skip-grant-tables系统参数启动mysqld
在启动mysqld时,如果加上系统参数skip-grant-tables,将会跳过读取系统数据库mysql的授权表,此时任何用户都可以不用密码登录MySQL,并且可以访问或修改MySQL中的任何数据。通常使用这个系统参数启动mysqld时也会加上系统参数skip-networking禁止远程连接,从MySQL 8开始,使用系统参数skip-grant-tables时会自动加上系统参数skip-networking。
可以在命令行里加上这个系统参数,如mysqld_safe --skip-grant-tables &,或者修改启动的参数文件,如/etc/my.cnf或者/etc/mysql/mysql.cnf,在[mysqld]下面加上skip-grant-tables后再重新启动msyqld。启动完成后即可不用密码登录,登录后使用下面的SQL语句修改mysql.user表里的字段authentication_string:
mysql> update mysql.user set authentication_string=password('dingjia') where user='root';
修改完成后,需要使用下面的命令将权限表重新载入:
mysql> flush privileges;
也可以使用mysqladmin flush-privileges或mysqladmin reload载入权限表。
但在MySQL 8版本中,这种方式已经不可行,因为其已移除了password()函数。可以使用alter user命令修改密码,但注意要载入权限表后才能使用alter user,修改过程如下:
mysql> alter user root identified by 'dingjia';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.07 sec)
mysql> alter user root@localhost identified by 'dingjia';
Query OK, 0 rows affected (0.02 sec)、
密码修改完成后,要去掉参数文件里的系统参数skip-grant-tables,重新启动mysqld
使用系统参数init-file修改root用户密码
采用跳过载入授权表的方法启动mysqld会让MySQL处于非常不安全的状态,因为此时任何用户均可修改数据库里的任何数据。但采用系统参数init-file修改root用户的密码就安全很多,而且只需要重启一次MySQL实例。
首先关闭实例,再创建一个SQL文件,如chpw.sql,在文件里面写上如下修改root密码的语句:
alter user 'root'@'localhost' identified by 'dingjia';
然后使用init-file系统参数启动实例,这个系统参数指向修改root密码的SQL文件,例如:
$ mysqld_safe --init-file=/tmp/chpw.sql &
也可以在参数配置文件里面加入如下代码,再启动实例:
init-file=/tmp/chpw.sql
MySQL实例启动时会自动执行这个SQL语句,启动完成即密码修改完毕。
实例讲解
MySQL 8.0运维与优化

下期预告
直方图的使用
参考书籍

《MySQL 8.0运维与优化(微课视频版)》
ISBN:9787302602682
姚远 著
定价:99.8元

扫码京东优惠购书
本书全面介绍MySQL数据库的管理、监控、备份恢复和高可用等方面的知识,并在此基础上讨论如何优化MySQL的实例和SQL语句,书中还包括大量的实战案例。

读者人群
本书适合具有一定IT基础知识的MySQL数据库爱好者阅读,也可以作为准备MySQL OCP考试的备考书。
精彩推荐
微信小程序游戏开发│猜数字小游戏(附源码+视频) Flink编程基础│Scala编程初级实践 Flink编程基础│FlinkCEP编程实践 Flink编程基础│DataStream API编程实践 Flink编程基础│DataSet API编程实践 数据分析实战│客户价值分析 数据分析实战│价格预测挑战 数据分析实战│时间序列预测 数据分析实战│KaggleTitanic生存预测






