[comment]: # translation:outdated

[comment]: # ({7af1bbaa-7af1bbaa})
# 1 创建数据库

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

[comment]: # ({dd54ff0c-fab90562})
#### 概述

在部署 Zabbix server 或 proxy 时必须要创建数据库。

本节提供创建 Zabbix 数据库的说明。 每个受支持的数据库都有对应的创建说明。

Zabbix 唯一支持的编码是 UTF-8 。使用此编码没有已知的任何安全漏洞。应注意如果使用其他的编码，则存在已知的安全问题。

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

[comment]: # ({1cf62759-fad527fc})
::: noteclassic
如果从 [Zabbix Git 存储库](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse) 安装 Zabbix，在进行下一步操作之前需要执行以下命令：
<br><br>
`$ make dbschema`
:::

[comment]: # ({/1cf62759-fad527fc})

[comment]: # ({66fa95e8-1e36e539})
#### MySQL/MariaDB

为了使 Zabbix server/proxy能够与 MySQL 数据库正常协作，支持字符集 utf8（又名 utf8mb3）和 utf8mb4（分别使用 utf8_bin 和 utf8mb4_bin 排序规则）。 建议使用 utf8mb4 进行新安装。

对于 Zabbix 6.0.11 及更新版本，需要在导入模式期间创建确定性触发器。 在 MySQL 和 MariaDB 上，如果启用了二进制日志记录并且没有超级用户权限同时未在MySQL配置文件中配置 log_bin_trust_function_creators = 1 ，则需要设置 GLOBAL log_bin_trust_function_creators = 1。

如果您从 Zabbix **packages** 安装，请继续执行适用于您的平台的 [instructions](https://www.zabbix.com/download)。

如果您从源码安装 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 代理数据库，只应导入 `schema.sql`（不导入 images.sql 或 data.sql）。

```bash
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# 如果您正在为 Zabbix proxy创建数据库，请在此处停止
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> zabbix < data.sql
```

成功导入schema后，可以禁用 `log_bin_trust_function_creators`：

```bash
mysql -uroot -p<password>
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
```

[comment]: # ({/66fa95e8-1e36e539})

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

您需要拥有有权创建数据库对象的数据库用户。

如果您从 Zabbix **packages** 安装，请继续执行适用于您的平台的 [instructions](https://www.zabbix.com/download)。

如果您从源码安装 Zabbix：

* 创建数据库用户。

以下 shell 命令将创建用户 `zabbix`。 出现提示时指定密码并重复密码（注意，系统可能首先要求您输入 `sudo` 密码）：

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

* 创建数据库。

以下 shell 命令将创建数据库 `zabbix`（最后一个参数），并将先前创建的用户作为所有者（`-O 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]: # ({/33bb4ad7-61d6043c})

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

创建和配置 TimescaleDB 的操作在单独的  [章节](/manual/appendix/install/timescaledb) 中说明。

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

[comment]: # ({870c2e3b-02d49e4f})
#### SQLite

仅 **Zabbix proxy** 支持使用 SQLite！

如果数据库不存在，将自动创建该数据库。

返回[安装部分](/manual/installation/install)。

[comment]: # ({/870c2e3b-02d49e4f})
