1 创建数据库

概述

在安装 Zabbix 服务器或 proxy 期间,必须创建 Zabbix 数据库。

本节提供了创建 Zabbix 数据库的说明。 每种受支持的数据库都有一套单独的说明。

要通过创建仅具有最小权限的数据库角色/用户来提高数据库安全性,请参阅每种受支持数据库的数据库创建最佳实践:

有关配置安全 TLS 连接的信息,请参阅到数据库的安全连接

UTF-8 是 Zabbix 唯一支持的编码。 已知它可以在不存在任何安全缺陷的情况下正常工作。 用户应注意,如果使用其他某些编码,已知会存在安全问题。 有关切换到 UTF-8 的信息,请参阅修复 Zabbix 数据库字符集和排序规则。 另请参阅使用 utf8mb4 排序规则进行过滤的限制

如果从 Zabbix Git repository 安装,则在继续执行后续步骤之前,需要运行以下命令:

make dbschema

MySQL/MariaDB

为了使 Zabbix 服务器/proxy 能够与 MySQL 数据库正常配合工作,支持使用字符集 utf8(也称为 utf8mb3)和 utf8mb4(其对应的排序规则分别为 utf8_bin 和 utf8mb4_bin)。 对于新安装,建议使用 utf8mb4。

确定性触发器需要在导入 schema 期间创建。 在 MySQL 和 MariaDB 上,如果启用了二进制日志、没有超级用户权限,并且未在 MySQL 配置文件中设置 log_bin_trust_function_creators = 1,则需要设置 GLOBAL log_bin_trust_function_creators = 1

如果您是通过 Zabbix 软件包 安装,请前往适用于您平台的说明

如果您是从源码安装 Zabbix:

  • 创建并配置数据库和用户。
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 proxy 数据库,只应导入 schema.sql(不导入 images.sql 和 data.sql)。
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# 如果您正在为 Zabbix proxy 创建数据库,请在此停止
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> --default-character-set=utf8mb4 zabbix < data.sql

在成功导入 schema 后,可以禁用 log_bin_trust_function_creators

mysql -uroot -p<password>

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

PostgreSQL

您需要有一个具有创建数据库对象权限的数据库用户。

如果您是通过 Zabbix 软件包 安装,请根据您的平台前往说明

如果您是从源码安装 Zabbix:

  • 创建数据库用户。

以下 shell 命令将创建用户 zabbix。 在提示时指定密码并重复输入密码(注意,系统可能会先要求您输入 sudo 密码):

sudo -u postgres createuser --pwprompt zabbix
  • 创建数据库。

以下 shell 命令将创建数据库 zabbix(最后一个参数),并将之前创建的用户设为所有者(-O zabbix)。

sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
  • 导入初始 schema 和数据(假设您位于 Zabbix 源码的根目录中)。 对于 Zabbix proxy 数据库,只应导入 schema.sql(不导入 images.sql 和 data.sql)。
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix
# 如果您正在为 Zabbix proxy 创建数据库,请在此处停止
cat images.sql | sudo -u zabbix psql zabbix
cat data.sql | sudo -u zabbix psql zabbix

以上命令仅作为示例,在大多数 GNU/Linux 安装环境中都可使用。 根据您的系统/数据库配置,您也可以使用不同的命令,例如:

psql -U <username>

如果您在设置数据库时遇到任何问题,请咨询您的数据库管理员。

TimescaleDB

有关创建和配置 TimescaleDB 的说明,请参见单独的章节

SQLite

Zabbix proxy 支持使用 SQLite!

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

返回安装章节