[comment]: # ({7af1bbaa-7af1bbaa})
# 1 データベースの作成

[comment]: # ({/7af1bbaa-7af1bbaa})

[comment]: # ({069b06b6-fab90562})
#### 概要

Zabbix サーバーまたはプロキシのインストール時に、Zabbix データベースを作成する必要があります。

このセクションでは、Zabbix データベースを作成するための手順を説明します。
サポートされている各データベースごとに、個別の手順が用意されています。

::: noteclassic
データベースロール/ユーザーを最小権限で作成してデータベースのセキュリティを向上させるには、各サポート対象データベースのデータベース作成ベストプラクティスを参照してください:
<br><br>

-   [MySQL/MariaDB](/manual/best_practices/access_control/mysql)
-   [PostgreSQL/TimescaleDB](/manual/best_practices/access_control/postgresql)

安全な TLS 接続の設定については、[データベースへの安全な接続](/manual/appendix/install/db_encrypt)を参照してください。
:::

UTF-8 は Zabbix でサポートされている唯一のエンコーディングです。
これは、セキュリティ上の欠陥なく動作することが確認されています。
他の一部のエンコーディングを使用すると、既知のセキュリティ上の問題があることに注意してください。
UTF-8 への切り替えについては、[Zabbix データベースの文字セットと照合順序の修復](/manual/appendix/install/db_charset_coll)を参照してください。
また、[utf8mb4 照合順序でのフィルタリングの制限](/manual/installation/known_issues#limits-of-filtering-with-utf8mb4-collations)も参照してください。

[comment]: # ({/069b06b6-fab90562})

[comment]: # ({44d449fd-fad527fc})
::: noteclassic
[Zabbix Gitリポジトリ](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse)からインストールする場合は、次の手順に進む前に以下のコマンドを実行する必要があります。
<br><br>
`make dbschema`
:::

[comment]: # ({/44d449fd-fad527fc})

[comment]: # ({6c1f0759-1e36e539})
#### MySQL/MariaDB

Zabbix サーバー/プロキシが MySQL データベースで正しく動作するために、文字セット utf8（別名 utf8mb3）および utf8mb4 がそれぞれサポートされています（それぞれ utf8_bin および utf8mb4_bin の照合順序を使用）。  
新規インストールでは utf8mb4 の使用を推奨します。

決定論的なトリガーは、スキーマのインポート時に作成する必要があります。  
MySQL および MariaDB では、バイナリログが有効で、スーパーユーザー権限がなく、かつ MySQL 設定ファイルで `log_bin_trust_function_creators = 1` が設定されていない場合、`GLOBAL log_bin_trust_function_creators = 1` を設定する必要があります。

[パッケージ](https://www.zabbix.com/download) または [コンテナ](/manual/installation/install/containers) から Zabbix をインストールする場合は、それぞれの手順を参照してください。

ソースから Zabbix をインストールする場合:

* データベースとユーザーを作成し、設定します。

```bash
mysql -uroot -p<password>

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> quit;
```

* データをデータベースにインポートし、utf8mb4 文字セットをデフォルトとして設定します（Zabbix ソースのルートディレクトリにいることを前提とします）。  
Zabbix プロキシのデータベースでは、`schema.sql` のみをインポートしてください（`images.sql` および `data.sql` は不要です）。

```bash
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# Zabbix プロキシ用のデータベースを作成している場合はここで停止
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> --default-character-set=utf8mb4 zabbix < data.sql
```

スキーマのインポートが正常に完了した後であれば、`log_bin_trust_function_creators` は無効化できます。

```bash
mysql -uroot -p<password>

mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
```

[comment]: # ({/6c1f0759-1e36e539})

[comment]: # ({e23c91b1-61d6043c})
#### PostgreSQL

データベースオブジェクトを作成する権限を持つデータベースユーザーが必要です。

Zabbixを[パッケージ](https://www.zabbix.com/download)または[コンテナ](/manual/installation/install/containers)からインストールする場合は、それぞれの手順を参照してください。

Zabbixをソースからインストールする場合:

* データベースユーザーを作成します。

次のシェルコマンドでユーザー `zabbix` を作成します。
プロンプトが表示されたらパスワードを入力し、同じパスワードを再入力してください（最初に `sudo` のパスワードを求められる場合があります）。

```bash
sudo -u postgres createuser --pwprompt zabbix
```

* データベースを作成します。

次のシェルコマンドは、先ほど作成したユーザーを所有者（`-O zabbix`）として、データベース `zabbix`（最後のパラメータ）を作成します。

```bash
sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
```

* 初期スキーマとデータをインポートします（Zabbixソースのルートディレクトリにいることを前提とします）。
Zabbixプロキシのデータベースでは、`schema.sql` のみをインポートしてください（`images.sql` や `data.sql` は不要です）。

```bash
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix
# Zabbixプロキシ用のデータベースを作成している場合はここで停止してください
cat images.sql | sudo -u zabbix psql zabbix
cat data.sql | sudo -u zabbix psql zabbix
```

::: noteimportant
上記のコマンドは、ほとんどの GNU/Linux 環境で動作する例として示しています。
システムやデータベースの構成に応じて、別のコマンドを使用できます。たとえば、次のようになります。
<br><br>
`psql -U <username>`
<br><br>
データベースの設定で問題がある場合は、データベース管理者に相談してください。
:::

[comment]: # ({/e23c91b1-61d6043c})

[comment]: # ({2e49279b-cc68ca58})
#### TimescaleDB

TimescaleDBの作成と設定の手順は、別の[セクション](/manual/appendix/install/timescaledb)で説明しています。

[comment]: # ({/2e49279b-cc68ca58})

[comment]: # ({017a3773-02d49e4f})
#### SQLite

**Zabbixプロキシ**でのみSQLiteの使用がサポートされています。

データベースが存在しない場合は自動的に作成されます。

[インストールセクション](/manual/installation/install/sources)に戻る。

[comment]: # ({/017a3773-02d49e4f})
