Moodle系列06:好不容易装好的Moodle忘了登录密码怎么办?

今天是我在学校教学平台课的第二周,孩子们开始以极高的热情投入到课程学习之中,很欣慰。大多数的同学结合我的教程、上课的演示基本上都可以将Moodle的服务器环境和软件平台架构起来了。然而,也有一些小插曲,最典型的一个就是,我们一位同学,费尽千辛万苦装好的平台,结果忘记了输入的管理员密码。就好像好不容易装修好了房子,结果大门钥匙不见了。所以这一节就来说明一下解决这个问题的方法。

这里就要说一下Moodle登录过程中身份校验的机制。Moodle中用户的信息存储在一张叫做mdl_users的数据表中,每个用户一行,其中用户名的字段叫username,密码的字段叫做password。但是作为一个很责任感的开源平台,Moodle并不会傻傻的将密码以明文的方式存储在数据表中(如果是这样的话,要解决就简单,登录进去直接查看一下密码就可以了)。那它是以什么样方式存储,经过我测试,它是32位的md5编码方式存储。

md5是什么?简单地说它就是一个不可逆的加密算法,假如你有一个字符串,例如“abc”,经过md5加密后,显示的是900150983cd24fb0d6963f7d28e17f72。那么在登录时,如何校验呢?实际上是这样的,Moodle的登录表单首先获取你的用户名与密码,然后将这个输入的明文密码以md5加密,这个用户名连同经md5加密的密码与数据库中存储的相应数据比对,如果完全一致,那么它就认为你是这个用户,让你登录。


mdl_user表记录

知道这个原理之后,问题就简单了。因为尽管md5不可逆,但是我们可以随便找一个新密码,比如说“abcd1234”,然后将它用md5加密,加密后的字符串通过phpmyadmin等数据库管理工具,将Moodle中相应用户的密码字段去替换了。然后你再以abcd1234这个密码登录就可以了。因为你输入的密码的md5值已经在数据库中了,所以比对就通过了。

那接下去的问题就只有一个了,就是如何获取abcd1234这个字符串的md5值?很简单,php中提供了一个内置函数md5(),可以用于输出特定字符的md5值,所以我们可以新建一个php文件,然后在其中输入以下代码打印“abcd1234”的md5值。

 

然后通过Web发布地址去访问这个文件,例如http://localhost/testphp.php,页面显示的内容为:e19d5cd5af0378da05f63f891c7467af 。

显示md5值

接下去,我们去打开phpmyadmin,然后打开moodle数据库下的mdl_user表,编辑其中用户名为admin的这个用户信息,将上面这个字符串去替换admin中原先password域的值。

然后我们就可以尝试用admin, abcd1234这个账号信息去登录Moodle系统了。当然登录之后,建议你可以在个人资料中再将这个密码更改为你自己熟悉的密码了。当然这次请务必牢记,这样的事情做第一次是新鲜的尝试,做第二次就显得2了。

你可能感兴趣的:(Moodle系列06:好不容易装好的Moodle忘了登录密码怎么办?)