1 创建数据库

概述

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

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

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

如果从 Zabbix Git 存储库 安装 Zabbix,在进行下一步操作之前需要执行以下命令:

make dbschema

MySQL/MariaDB

字符集 utf8(也称为 utf8mb3)和 utf8mb4 均受支持(分别使用 utf8_bin 和 utf8mb4_bin 校对),以便 Zabbix server/proxy 能够正确地与 MySQL 数据库协作。建议新安装使用 utf8mb4。

对于 Zabbix 6.0.11 及更新版本,在导入模式期间需要创建确定性触发器。在 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;
  • 将数据导入数据库。对于 Zabbix proxy 数据库,只应导入 schema.sql(不包括 images.sql 和 data.sql)。
cd database/mysql
       mysql -uzabbix -p<password> zabbix < schema.sql
       # stop here if you are creating database for Zabbix proxy
       mysql -uzabbix -p<password> zabbix < images.sql
       mysql -uzabbix -p<password> zabbix < data.sql

log_bin_trust_function_creators 在成功导入模式后可以被禁用:

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

PostgreSQL

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

如果您从 Zabbix packages 安装,请继续执行适用于您的平台的 instructions

如果您从源码安装 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
  • 导入初始模式和数据(假设您在 Zabbix 源码的根目录中)。

对于 Zabbix 代理数据库,只应导入 schema.sql(不导入 images.sql 或 data.sql)。

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

上面的命令作为示例提供,可以在大多数 GNU/Linux 安装中使用。 您可以使用不同的命令,例如:

psql -U <username>

取决于您的系统/数据库的配置方式。 如果您在设置数据库时遇到问题,请咨询您的数据库管理员。

TimescaleDB

创建和配置 TimescaleDB 的操作在单独的 章节 中说明。

Oracle

创建和配置 Oracle 数据库的操作在单独的 章节 中说明。

SQLite

Zabbix proxy 支持使用 SQLite!

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

返回安装部分