suin.io

Concrete5の管理者パスワードを忘れたとき再設定する方法

suin2010年3月15日

XOOPS以外のCMSはあまり使ってないですが、CMSとして統一感・完成度が高いConcrete5を試してみました。MAMPで構築したローカル環境にConcrete5をインストールしたのですが、うっかり管理者のパスワードを忘れてしまいました。

通常、パスワードを忘れた場合、メールでリマインドできるようです。が、あいにくローカル環境ということもあり、メール送信が動かない…。

もしや、データベースに生パスワードが保存されているのでは?と思いデータベースを見てみました。すると、UsersテーブルにuPasswordというカラムがあるじゃないですか。しめたと思って、中身を見てみたらばっちり暗号化されていました。さすがに、最近のCMSはパスワードを生で保存しておくなんてことはしないようです。

PHPをやっている人ならこの暗号化は、md5()だとわかったので、md5('admin')を実行して、それをuPasswordに保存してadmin@adminでログインを試みました。それでも、依然としてログインできません。パスワードが間違っているといいます。

この手の物は、たいていパスワードにprefixを付けている可能性があるので、ソースをおってみると、案の定PASSWORD_SALTが付け加えられたmd5()されてました。

謎がすべてとけたところで、再設定方法

  1. /Applications/MAMP/htdocs/concrete5/config/site.phpを開く。
  2. <?php 
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', 'root');
    define('DB_DATABASE', 'concrete5');
    define('BASE_URL', 'http://localhost');
    define('DIR_REL', '/concrete5');
    define('PASSWORD_SALT', 'BtL4OCqEYan5yZrDVHUhKcFbNzmp3Q1A7uToifeWMwSv8Xsx0jkG2l6J9RPIg');
    ?>
    
    この中のPASSWORD_SALTの値をコピー。この例だと、BtL...Plgの部分です。
  3. /Applications/MAMP/htdocs/pass.phpを作成。
  4. <?php
    
    $salt = 'BtL4OCqEYan5yZrDVHUhKcFbNzmp3Q1A7uToifeWMwSv8Xsx0jkG2l6J9RPIg';
    $password = 'admin';
    echo md5($password . ':' . $salt);
    
    ?>
    
    pass.phpの中身を上のように書く。$salt = '';の部分はsite.phpでコピーした値を書く。ここでは、「admin」をパスワードとして設定します。adminが嫌なら他のものに変えてOK。
  5. ブラウザでpass.phpにアクセスする。
  6. 表示された32文字「65f7ed3aff95ce2394d6458c442eb3b0」などをコピーする。
  7. phpMyAdminで、Concrete5のデータベースを開く。
  8. SQLで下のクエリーを実行する。65f...3b0の部分は先程ブラウザでコピーしたものに変えてください。
    UPDATE  `Users` SET  `uPassword` =  '65f7ed3aff95ce2394d6458c442eb3b0' WHERE  `uID` =1;
  9. Concrete5に戻ってログインしてみる。
  10. pass.phpを削除する。
  11. パスなどは適宜読みかえてください。

RELATED POSTS