1 创建数据库
概述
在部署 Zabbix server 或 proxy 时必须要创建数据库。
本节提供创建 Zabbix 数据库的说明。 每个受支持的数据库都有对应的创建说明。
Zabbix 唯一支持的编码是 UTF-8 。使用此编码没有已知的任何安全漏洞。应注意如果使用其他的编码,则存在已知的安全问题。
如果从 Zabbix Git 存储库 安装 Zabbix,在进行下一步操作之前需要执行以下命令:
$ make dbschema
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。
如果您从源码安装 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 代理数据库,只应导入
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> 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 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!
如果数据库不存在,将自动创建该数据库。
返回安装部分。