PostgreSQL
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」エラーが表示される場合は、クライアント認証ファイルを確認してください。
MySQLでは、ユーザアカウントを作成するときやデータベースに対する権限を付与するときに、'moodleuser'@'servername'構文を使用してアクセスを制御します。PostgreSQLでは、PostgreSQLの「data」フォルダにある「pg_hba.conf」というクライアント認証ファイルを使用します。このファイルには、どのユーザがどのデータベースへの接続を許可されているか、接続元として許可されているIPアドレス、および接続に使用できる認証方法の一覧が記載されています。
クライアント認証ファイルには次の行(「#」記号で始まる行)があり、各データを追加する順序を示しています。同じマシン上のPostgreSQLサーバへの接続をMoodleに許可するには、次の行を追加し、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サービスを再起動する必要があります。