dokuwiki関係

mysqlによる認証

local.phpで認証方式をmysqlにする。

$conf['authtype'] = "mysql";

local.protected.phpでmysqlの設定ファイルを読み込む。

require_once('mysql.conf.php');

local.phpはdokuwikiの設定画面で書き換えられる。その際、設定項目にない変数は削除されるので、local.protected.phpに書く必要がある。

mysqlでDBおよびテーブルを作成する。

CREATE TABLE `users` (
  `uid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `login` varchar(20) NOT NULL DEFAULT '',
  `pass` varchar(60) NOT NULL DEFAULT '',
  `firstname` varchar(255) NOT NULL DEFAULT '',
  `lastname` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY  (`uid`),
  UNIQUE KEY `login` (`login`)
) TYPE = MYISAM;

CREATE TABLE `groups` (
  `gid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY  (`gid`),
  UNIQUE KEY `name` (`name`)
) TYPE = MYISAM;
 
CREATE TABLE `usergroup` (
  `uid` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `gid` int(10) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY  (`uid`,`gid`)
) TYPE = MYISAM;

mysql.conf.php.exampleをmysql.conf.phpにリネームし、データベース情報などを編集する。

認証ロジック上の注意点

mysql.conf.phpテンプレートで用意されているSQLでは、グループテーブルを結合した上で、ユーザのパスワードを抽出する。その際、標準のグループに所属していなければならない。標準のグループに所属していなければ、認証は必ず失敗するため、手動でデータベースを編集する際は、標準グループに追加することを忘れないこと。

ユーザ管理画面では、ユーザ作成、更新ともに自動的に標準グループに追加されないので、必ずカンマ区切りで入っていることを確認すること。