Maharaのインストール

ポート鮒ぉ利を作成用ソフト Mahara のインストールで嵌ったのでメモ


Mahara(https://mahara.org/)のデータベースには MySQLPostgreSQL が使用できるが、インストールしてみるとその両方でエラーが発生し正常にインストールできないとう現象があった。

MySQLの場合

MySQL を使用した場合、初回に Mahara のURLを開いたときにセットアップスクリプトが実行されるが、そのスクリプトの中で

CREATE TRIGGER "testtrigger" BEFORE INSERT ON "testtable" FOR EACH ROW BEGIN END;

というSQL文が発行される。


ところがこの時点で testtable がないために

Maharaれuires permission to create database triggers, but is unable to do so. Please ensure that the trigger privilege has been granted to the appropriate user in your MySQL installation. For instructions on how to do this, see https://wiki.mahara.org/index.php/System_Administrator's_Guide/Granting_Trigger_Privilege

と言うメッセージが表示されて止まる。


配布されているファイルを見ても、testtable を作っているスクリプトはないし、テーブルレイアウトも分からないので詰む。

PostgreSQL の場合

CentOS の場合なので、もしかしたら他のOSなら問題ないのかもしれないが、CentOS 6.4 + PostgreSQL 8.4.13 の場合、Mahara のURLを開くと、以下のようなエラーが表示される

postgres7 error: [-1: Database connection failed] in CONNECT

httpderror ログを見ると、pg_connect でエラーがでて PstgreSQL のサーバに接続できないのが分かる

[WAR] 54 (lib/adodb/drivers/adodb-postgres64.inc.php:691) pg_connect(): Unable to connect to PostgreSQL server: FATAL:  \xe3\x83\xa6\xe3\x83\xbc\xe3\x82\xb6"mahara"\xe3\x81\xae\xe3\x83\x91\xe3\x82\xb9\xe3\x83\xaf\xe3\x83\xbc\xe3\x83\x89\xe8\xaa\x8d\xe8\xa8\xbc\xe3\x81\xab\xe5\xa4\xb1\xe6\x95\x97\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f

これは PostgreSQL の設定で Linux 上のアカウントと PostgreSQL のアカウントが一致しないと発生するようで、/var/lib/pgsql/data/pg_hba.conf の最後にあるログインメソッドを ident から password に変更すればいい。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               password
# IPv4 local connections:
host    all         all         127.0.0.1/32          password
# IPv6 local connections:
host    all         all         ::1/128               password

最近 PostgreSQL を使うプログラムが増えてきたような感じがするので、また勉強しとこう