PostgreSQL

提供:MoodleDocs
移動先:案内検索

PostgreSQLは、Moodleが完全にサポートしている5つのデータベースのうちの1つです。データベースはすべてのMoodleインストールに必要なコンポーネントです。

Moodleデータベースの作成

この手順は、データベースサーバとウェブサーバが同じマシンにあることを前提としています。そうでない場合は、さらにいくつかの作業を行う必要があります。詳しくは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 (ID認証に失敗しました)' というエラーが表示される場合、あなたのクライアント認証ファイルをチェックしてください。

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アドレスを一致するように変更することができます。この場合、2つのサーバ間の接続が安全でない限り、メソッドフィールドで 'パスワード' を使用しないことをお勧めします。 'パスワード' はパスワードをプレーンテキストで送信します。このような状況では、METHODを代わりに 'md5' に変更することを検討する必要があります。

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

関連項目