数据库创建
概述
在安装 Zabbix 服务器或 proxy 期间,必须创建 Zabbix 数据库。
本节提供创建 Zabbix 数据库的说明。 每种受支持的数据库都有一套单独的说明。
要通过创建权限最小化的数据库角色/用户来提高数据库安全性,请参阅各受支持数据库的数据库创建最佳实践:
有关配置安全的 TLS 连接,请参阅到数据库的安全连接。
UTF-8 是 Zabbix 唯一支持的编码。 已知它可以正常工作且不存在安全缺陷。 用户应注意,使用其他某些编码时已知存在安全问题。 如需切换到 UTF-8,请参阅修复 Zabbix 数据库字符集和排序规则。 另请参阅使用 utf8mb4 排序规则进行过滤的限制。
如果从 Zabbix Git repository 安装,则在继续执行后续步骤之前,需要运行以下命令:
make dbschema
MySQL/MariaDB
支持使用 utf8mb4 字符集和 utf8mb4_bin 排序规则,以确保 Zabbix 服务器/proxy 能够与 MySQL/MariaDB 数据库正常工作。
为避免将来出现问题,强烈建议在新安装和现有安装中都使用 utf8mb4 字符集和 utf8mb4_bin 排序规则。
要将使用 utf8mb3 字符集和 utf8mb3_bin 排序规则的数据库转换为 utf8mb4 字符集和 utf8mb4_bin 排序规则,请按照 修复 Zabbix 数据库字符集和排序规则 中的说明进行操作。
在导入 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
您需要拥有具有创建数据库对象权限的数据库用户。
如果您是从 packages 或 containers 安装 Zabbix,请参阅相应的说明。
如果您是从源代码安装 Zabbix:
- 创建数据库用户。
以下 shell 命令将创建用户 zabbix。
在提示时指定密码,并重复输入密码(注意,系统可能会先要求您输入 sudo 密码):
sudo -u postgres createuser --pwprompt zabbix
- 创建数据库。
以下 shell 命令将使用之前创建的用户作为所有者(-O zabbix)创建数据库 zabbix(最后一个参数)。
sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
- 导入初始架构和数据(假设您位于 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 的说明,请参见单独的章节。
Elasticsearch 和 ClickHouse
Zabbix 也可以将历史数据存储在 Elasticsearch 或 ClickHouse 中。 有关设置说明,请参阅链接页面。
SQLite
仅 Zabbix proxy 支持使用 SQLite!
如果数据库不存在,将自动创建该数据库。
返回安装章节。