Moodle系列06:好不容易裝好的Moodle忘了登錄密碼怎么辦?

今天是我在學校教學平臺課的第二周,孩子們開始以極高的熱情投入到課程學習之中,很欣慰。大多數的同學結合我的教程、上課的演示基本上都可以將Moodle的服務器環境和軟件平臺架構起來了。然而,也有一些小插曲,最典型的一個就是,我們一位同學,費盡千辛萬苦裝好的平臺,結果忘記了輸入的管理員密碼。就好像好不容易裝修好了房子,結果大門鑰匙不見了。所以這一節就來說明一下解決這個問題的方法。

這里就要說一下Moodle登錄過程中身份校驗的機制。Moodle中用戶的信息存儲在一張叫做mdl_users的數據表中,每個用戶一行,其中用戶名的字段叫username,密碼的字段叫做password。但是作為一個很責任感的開源平臺,Moodle并不會傻傻的將密碼以明文的方式存儲在數據表中(如果是這樣的話,要解決就簡單,登錄進去直接查看一下密碼就可以了)。那它是以什么樣方式存儲,經過我測試,它是32位的md5編碼方式存儲。

md5是什么?簡單地說它就是一個不可逆的加密算法,假如你有一個字符串,例如“abc”,經過md5加密后,顯示的是900150983cd24fb0d6963f7d28e17f72。那么在登錄時,如何校驗呢?實際上是這樣的,Moodle的登錄表單首先獲取你的用戶名與密碼,然后將這個輸入的明文密碼以md5加密,這個用戶名連同經md5加密的密碼與數據庫中存儲的相應數據比對,如果完全一致,那么它就認為你是這個用戶,讓你登錄。


mdl_user表記錄
mdl_user表記錄

知道這個原理之后,問題就簡單了。因為盡管md5不可逆,但是我們可以隨便找一個新密碼,比如說“abcd1234”,然后將它用md5加密,加密后的字符串通過phpmyadmin等數據庫管理工具,將Moodle中相應用戶的密碼字段去替換了。然后你再以abcd1234這個密碼登錄就可以了。因為你輸入的密碼的md5值已經在數據庫中了,所以比對就通過了。

那接下去的問題就只有一個了,就是如何獲取abcd1234這個字符串的md5值?很簡單,php中提供了一個內置函數md5(),可以用于輸出特定字符的md5值,所以我們可以新建一個php文件,然后在其中輸入以下代碼打印“abcd1234”的md5值。

 <? echo md5('abcd1234')
  ?>

然后通過Web發布地址去訪問這個文件,例如http://localhost/testphp.php,頁面顯示的內容為:e19d5cd5af0378da05f63f891c7467af 。

顯示md5值
顯示md5值

接下去,我們去打開phpmyadmin,然后打開moodle數據庫下的mdl_user表,編輯其中用戶名為admin的這個用戶信息,將上面這個字符串去替換admin中原先password域的值。

然后我們就可以嘗試用admin, abcd1234這個賬號信息去登錄Moodle系統了。當然登錄之后,建議你可以在個人資料中再將這個密碼更改為你自己熟悉的密碼了。當然這次請務必牢記,這樣的事情做第一次是新鮮的嘗試,做第二次就顯得2了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容