PostgreSQL

PostgreSQLはMoodleによって完全にサポートされている5つのデータベースのうちの1つです。データベースはあらゆるMoodleインストールに必須のコンポーネントです。

Moodleデータベースを作成する

これらの手順は、データベースサーバーとWebサーバーが同じマシン上にあることを前提としています。そうでない場合は、もう少し作業が必要です。詳細についてはPostgreSQLのドキュメントを参照してください。

  • PostgreSQLコマンドラインクライアントにログインします。正確な形式はあなたのPostgreSQLがどのように設定されているかによって異なりますが、次のようになります。
   $ psql -U postgres
   Password for user postgres:

インストール中に設定した 'postgres'ユーザのパスワードを入力してください。いくつかの前文の後、あなたはプロンプトpostgres =#を見るべきです。

  • Moodleデータベース用のユーザを作成し、パスワードを割り当てます。
   postgres=# CREATE USER moodleuser WITH PASSWORD 'yourpassword';

適切な強度のパスワードを入力してください。実際の認証方法はあなたのPostgreSQLサーバのpg_hba.confファイルに依存します。一部の認証方法(identなど)はパスワードを必要としません。詳細については、下記の「クライアント認証」のセクションを参照してください。

  • データベースを作成します。
   postgres=# CREATE DATABASE moodle WITH OWNER moodleuser;

文字セットと照合

PostgreSQLサーバのデフォルトの照合があなたのニーズに合わない場合は、あなたのMoodleデータベースに明示的なLC_CTYPE(文字分類)とLC_COLLATE(文字列ソート順)設定を提供することができます。次の例では、チェコのMoodleサイト用に最適化された 'moodle'という新しいデータベースを作成します。

   postgres=# CREATE DATABASE moodle WITH OWNER moodleuser ENCODING 'UTF8' LC_COLLATE='cs_CZ.utf8' LC_CTYPE='cs_CZ.utf8' TEMPLATE=template0;

詳細はPostgreSQLマニュアルの文字セットのサポートの章を参照してください。

データベースが正しく作成されたことを確認するには、psqlコンソールで\ lを使用するか、 psql -lシェルコマンドを実行してください。以下のような結果が得られるはずです。

   postgres=# \l
                                      List of databases
      Name    |  Owner     | Encoding |  Collation  |    Ctype    |   Access privileges   
   -----------+------------+----------+-------------+-------------+-----------------------
    moodle    | moodleuser | UTF8     | cs_CZ.utf8  | cs_CZ.utf8  | 
    postgres  | postgres   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
    template0 | postgres   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                                  : postgres=CTc/postgres
    template1 | postgres   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                                  : postgres=CTc/postgres

クライアント認証

クライアント認証は、どのユーザアカウントがどのホストからどのデータベースに接続できるかをPostgreSQLが決定する方法です。 PostgreSQLはこれをMySQLとは非常に異なる方法で処理します。これは、MySQLに慣れていて現在PostgreSQLサーバをセットアップしているシステム管理者にとっての潜在的な落とし穴です。

上記の手順に従ったが、Moodleがデータベースに接続せず、 'Ident authentication failed'というエラーを表示することがわかった場合は、クライアント認証ファイルを確認してください。

MySQLでは、 'moodleuser' @ 'servername'構文を使用して、ユーザーアカウントが作成されたとき、またはデータベースに対する特権が付与されたときにアクセスが制御されます。 PostgreSQLは、PostgreSQLの 'data'フォルダにある 'pg_hba.conf'というクライアント認証ファイルを使用します。このファイルには、どのユーザーがどのデータベースへの接続を許可されているか、そのIPアドレスからのアクセス、および接続に使用できる認証方法の一覧が表示されます。

クライアント認証ファイルには、以下のような('#'記号で始まる)行があります。これは、各データを追加する順序を示しています。 Moodleに同じマシン上のPostgreSQLサーバに接続する許可を与えるには、以下の行を追加し、DATABASEとUSERカラムを実際のデータベース名と上記で設定したユーザ名に変更します。 METHODフィールドには「password」と入力してください。ここに実際のパスワードを入れないでください。

   # TYPE      DATABASE    USER            CIDR-ADDRESS        METHOD
   host        moodle      moodleuser      127.0.0.1/32        password

あなたのデータベースがあなたのMoodleインストールとは別のサーバ上にある場合、あなたはそれに合うように上のIPアドレスを変更することができます。この場合、 'password'はプレーンテキストでパスワードを送信するため、2つのサーバー間の接続が安全でない限り、methodフィールドに 'password'を使用しないことをお勧めします。このような場合は、代わりにMETHODを 'md5'に変更することを検討してください。

クライアント認証ファイルを変更したら、PostgreSQLサービスを再起動する必要があります。

関連情報