ステップ 3:データベースを作成する
テストサイトに Drupal をインストールしている場合は、このステップを飛ばせます。インストーラースクリプトを実行する際(次のステップ)には、新しいデータベースを作成する権限を持つデータベースのユーザー名とパスワードを指定するだけで十分です。
公開 Web サーバーに Drupal をインストールしている場合は、まずデータベースを作成し、権限の低いユーザーにアクセスを付与すべきです。インストール中に指定したデータベースユーザーは、ページが読み込まれるたびにデータベースに接続します。
このページでは、次のいずれかの方法を使って Drupal データベースを作成する手順を説明します:
- Web ベースのコントロールパネル(例:CPanel や Plesk)
- PhpMyAdmin
- SQL コマンドを使う(コマンドライン経由)
- MySQL / MariaDB コマンドを使う
- PostgreSQL コマンドを使う
MySQL / MariaDB のデータベース名で使用できる文字
- データベース名に大文字を使うと、小文字に変換されます。
- 使用できる文字:a..z、0..9、および「_」(アンダースコア)。
ブラウザーベースのコントロールパネルでデータベースとユーザーを作成する
ほとんどの Web ホスティングアカウントには、サイトの管理を助ける Web コントロールパネルが用意されています。これらのツールには、新しいデータベースと、データベース権限を持つ「ユーザー」を作成するための使いやすい機能が含まれています。ブラウザーベースのコントロールパネルを使ってデータベースを作成するには、そのドキュメントを参照するか、Web ホスティングプロバイダーに連絡してください。
データベース用のユーザーを作成すると、ユーザーに権限を割り当てられるページが表示されることがあります。ほとんどのコントロールパネルの「データベースウィザード」では、単に「All(すべて)」の権限を選択する(そして一覧にあれば「GRANT」のチェックを外す)だけで、ユーザーを適切に設定できます。
ユーザー名、パスワード、データベース名、ホスト名(たとえば http://example.com、http://drupal.example.com、http://example.com/blog などにインストールしている場合)を記録しておきます。この情報は、インストールスクリプト中にブラウザーで入力します。
注意:多くの場合、Web インターフェースを介してデータベースとユーザーを作成すると、コントロールパネルのログインユーザー名がデータベース名とデータベースユーザー名の両方にプレフィックスとして追加されます。たとえば、サイトのコントロールパネルに「webadmin」としてログインし、「drupal8db」という名前のデータベースと「d8user」というユーザーを作成した場合、インストール中に "webadmin_drupal8db" と "webadmin_d8user" を入力する必要があるかもしれません。これは、多くのホスティングアカウントが共有サーバー上にあり、各データベースとユーザー名がすべてのアカウントで一意でなければならないためです。
phpMyAdmin を使ってデータベースとユーザーを作成する
phpMyAdmin を使ってデータベースを作成する最も安全な方法は、新しいデータベースにはすべての権限を持ち、他のデータベースには一切権限を持たないユーザーを作成することです。これは、同じサーバー上のすべてのサイトで共有のユーザー名とパスワードを使うよりも安全です。
注意: この手順は、phpMyAdmin への root アクセスがあり、phpMyAdmin 3.5.x を使っていることを前提としています。
- root ユーザーとして phpMyAdmin にログインします。
- 「Users(ユーザー)」をクリックし、次に「Add user(ユーザーを追加)」をクリックします。(注意: root ユーザーの認証情報を使うこともできます。)
- Username(ユーザー名)フィールドに、希望するユーザー名を入力します。
- 「Host(ホスト)」フィールドでは、別のサーバーからアクセスするのでない限り、セキュリティを高めるために「Local(ローカル)」を選びます。
- ユーザーのパスワードを入力または生成します。
- Database for user(ユーザー用データベース) セクションで、同じ名前の「Create database(データベースを作成)」を選択し、すべての権限を付与します。
- COLLATION が utf8mb4_unicode_ci または utf8mb4_general_ci に設定されていることを確認します。
- 注意: これらの照合順序(COLLATION)の違いは、文字の比較と並べ替えにあります。utf8mb4_general_ci は少し高速で、utf8mb4_unicode_ci はより正確です。迷ったら utf8mb4_unicode_ci を使ってください。
- 注意: この過程で COLLATION を設定できない場合は、データベースを選択した後に「Operations(操作)」で後から変更できます。
8. Go をクリックしてユーザーを作成します。
phpMyAdmin は、ユーザーアカウントと同じ名前の新しいデータベースを作成します。データベース名とユーザー名を別々にしたい場合:
- Databases(データベース) をクリックし、名前を変更したいデータベース名をクリックします。
- 「Operations(操作)」をクリックします。
- 「Rename database to(データベース名を変更)」セクションに、新しいデータベース名を入力します。
- Go をクリックします。
phpMyAdmin のさらなるヘルプについては、公式 wiki を参照してください。
コマンドラインを使ってデータベースを作成する
Web コントロールパネルを使わない場合や、MySQL、MariaDB、PostgreSQL に慣れていてそれらを好む場合は、次のセクションでその方法を説明します。
コマンドラインでの権限とデータベース作成についての詳細は、INSTALL.mysql.txt(MySQL/MariaDB)および INSTALL.pgsql.txt(PostgreSQL)にあります。
MySQL / MariaDB コマンドを使ってデータベースを作成する
注意: データベースは、照合順序 utf8mb4_unicode_ci または utf8mb4_general_ci で UTF-8(utf8mb4)エンコーディングを使う必要があります。違いは文字の比較と並べ替えに関するものです。utf8mb4_general_ci は少し高速で、utf8mb4_unicode_ci はより正確です。迷ったら utf8mb4_unicode_ci を使ってください。
MySQL のインストールと設定については、http://dev.mysql.com/doc/refman/5.7/en/index.html にアクセスしてください。
MariaDB については、https://mariadb.com/kb/en/ にアクセスしてください。
以下の例では、'username' は CREATE と GRANT 権限を持つ MySQL/MariaDB ユーザーで、'databasename' は新しいデータベース名です。あなたの環境に合った名前を使ってください。
- 新しいデータベースを作成します:
mysql -u username -p -e "CREATE DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; - ログインしてアクセスを設定します:
mysql -u username -p - ユーザーを作成し、権限を割り当てます:
CREATE USER username@localhost IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password';
特殊文字は必ずエスケープしてください。たとえば、データベース名にワイルドカード文字であるアンダースコア(_)が含まれる場合は、バッククォートで囲みます。drupal_test_account.* は `drupal\_test\_account`.* とすべきです。
注意 1: Drupal インストール用のユーザー/ホストの組み合わせは、列挙したすべての権限(おそらく CREATE TEMPORARY TABLES を除く)を持っていなければなりません。
注意 2: Drush で作成したデータベースダンプを復元するには、LOCK TABLES 権限を追加してください。
GRANT の詳細:http://dev.mysql.com/doc/refman/5.0/en/grant.html。
- 'databasename' — あなたのデータベース名
- 'username' — あなたの MySQL/MariaDB ユーザー
- 'localhost' — Drupal のホストサーバー
- 'password' — ユーザーのパスワード
- 成功時の応答:
Query OK, 0 rows affected - 権限をフラッシュします:
FLUSH PRIVILEGES; - MySQL/MariaDB を終了します:
exit - 予想される応答:
Bye
PostgreSQL を使ってデータベースを作成する
データベースは UTF-8(Unicode)エンコーディングを使う必要があります。
1. データベースユーザーを作成する
このステップは、ホストがまだユーザーを設定していない場合や、専用の Drupal ユーザーが必要な場合にのみ必要です。これは新しいユーザー「username」を作成し、パスワードの入力を求めます:
createuser --pwprompt --encrypted --no-adduser --no-createdb username
成功すると、CREATE USER と表示されます。
2. データベースを作成する
このステップは、ホストがまだデータベースを作成していない場合や、Drupal 用に新しいものが欲しい場合にのみ必要です:
createdb --encoding=UNICODE --owner=username databasename
成功すると、CREATE DATABASE と表示されます。