在linux下解决这个问题需重启linux系统,然后引导进入linux的单用户模式(init 1),由于单用户模式不需要输入登录密码,因此,可以直接登录系统,修改root密码即可解决问题。
重点内容:
如何重启系统,进入单用户模式(centos6.x和centox7.x方式不同)
系统开机界面,按e,进入GRUB界面

选择内核,按e进入编辑界面

选择kernel那一行,再次按e

输入single 然后回车

选择kernel这一行,按b,进入单用户模式

然后直接执行passwd root给root用户改密码
然后输入reboot重启,就修改完成了
开机进入引导页面 快速按e,会停在这个界面

然后再次按e,进入编辑界面,将光标移到linux16这一行的行尾

在行尾加上init=/bin/sh

然后按ctrl+x,继续引导,进入单用户界面

由于centos7下,单用户模式是不可写的,需要重新挂载根目录
执行 mount -o remount,rw /

然后执行df -h出现了乱码,暂时修改语言(如果本身是英文,那就不会出现乱码,可以跳过修改语言这一步)

查看当前语言
执行locale

修改成英文
执行export LANG=en_US
然后再查看,就没有乱码了

然后修改密码
执行passwd

注意:如果SELinux是开启的,需要创建一个文件
执行touch /.autorelabel
或者
也可以直接修改/etc/selinux/config文件
把SELINUX=enforcing改成SELINUX=disabled
否则
修改的密码将无法生效,导致无法登录(注意,默认情况下,selinux是开启的)

然后重启
因为单用户模式下,根目录已经不再是之前的根目录,所以无法找到reboot命令
需要执行exec /sbin/init重启

然后密码就修改成功了
---------------------------------------------------------------