Files

174 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Ubuntu 24.04 安装 Zabbix 8.0 全记录
date: '2026-05-22T00:00:00.000Z'
slug: '202605221646'
draft: false
categories:
- 笔记
tags: []
author: 小赵
layout: post
ai_comment: >-
MySQL 8.0的binlog和权限管理确实严格了不少。建议在导入前临时关闭binlog(SET
SQL_LOG_BIN=0)或者给zabbix用户加SUPER权限。另外AllowUnsupportedDBVersions=1这个参数很关键,Zabbix
8.0对MySQL版本校验很严格,遇到类似问题的同仁可以直接参考这条解决方案。路径变更问题也提醒我们,版本升级时文档结构可能调整,find命令比记忆路径更可靠。
---
## 环境说明
新到了一台装了 Ubuntu 24.04 的机器,需要搭个 Zabbix 8.0 。用的 MySQL 8.0.45 做数据库,整个过程踩了不少坑,记录一下方便以后翻看。
---
## 安装流程
### 添加官方源
Ubuntu 自带源里的 Zabbix 版本太老,直接去官方拉最新的仓库包:
```bash
wget https://repo.zabbix.com/zabbix/8.0/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_8.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_8.0+ubuntu24.04_all.deb
sudo apt update
```
### 安装组件
一条命令把服务端、前端、数据库、Agent 全装上:
```bash
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mysql-server
```
### 配置数据库
先登进 MySQL:
```bash
sudo mysql -u root
```
建库、建用户、授权,三步走:
```sql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
QUIT;
```
### 导入初始数据
```bash
sudo zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
```
### 改配置文件
编辑 `/etc/zabbix/zabbix_server.conf`,加上这两行:
```
DBPassword=你的密码
AllowUnsupportedDBVersions=1
```
第二行后面会讲到为什么需要,第二行配置文件搞了我很久。
### 修复语言环境
```bash
sudo apt install -y locales
sudo locale-gen en_US.UTF-8
```
### 启动服务
```bash
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
```
### 网页初始化
浏览器打开 `http://你的服务器IP/zabbix`,跟着向导填:
- 数据库类型选 MySQL
- 主机填 localhost
- 库名 zabbix,用户名 zabbix,密码填你设的那个
- 时区选 Asia/Shanghai
完成后用 `Admin / zabbix` 登录就行。
---
## 踩过的坑
### 坑一:数据文件路径不对
照着网上教程写的路径 `/usr/share/zabbix-sql-scripts/mysql/server.sql.gz`,结果报文件不存在。用 `find /usr/share -name "server.sql.gz"` 搜了一下才发现 8.0 版本路径变了,实际在 `/usr/share/zabbix/sql-scripts/mysql/server.sql.gz`,中间少了一层目录。
### 坑二:数据库权限报错
导入数据时报这个:
```
ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled...
```
MySQL 开了 binlog,zabbix 用户没有 SUPER 权限,没法创建存储过程。先登录 root 执行一下 `SET GLOBAL log_bin_trust_function_creators = 1;` 临时放开限制,再重新导入就好了。
### 坑三:配置文件变量名大小写
用 `grep "DBpassword"` 查配置啥也没找到,折腾半天发现是大小写问题,变量名是 `DBPassword`(P 大写)。Linux 下这种大小写敏感的地方挺多的,习惯了就好。
### 坑四:MySQL 版本不被支持
服务死活起不来,日志里写着:
```
Unable to start Zabbix server due to unsupported MySQL database version (8.00.45).
Must be at least (8.04.00).
```
Ubuntu 24.04 自带的 MySQL 8.0.45 版本太新,Zabbix 8.0 的白名单里还没有它。其实数据库完全兼容,只是校验逻辑没跟上。解决方法是配置文件里加一行 `AllowUnsupportedDBVersions=1`,跳过版本检查就好。当然这行得自己承担风险,不过单机用完全没问题。
### 坑五:语言环境检测不通过
网页安装那步卡在系统语言检查,`en_US` 那项是红色的。因为系统缺了英文语言包,装上 `locales` 并生成 `en_US.UTF-8`,重启 Apache 和 Zabbix Server 就过了。
### 坑六:数据没完全导进去
前面权限问题导致导入中断,虽然部分表已经建了但 `users` 表是空的,启动时直接报:
```
cannot use database "zabbix": its "users" table is empty
```
干脆删库重建,重新完整导入一遍,最后 `SHOW TABLES` 出来 211 张表就对了。
---
## 顺手学到的几个知识点
- **`mysql -p` 跟密码**时中间不能有空格,建议直接回车然后交互式输入,更安全
- **`sed -i`** 是原地改文件,加 `.bak` 后缀可以自动备份原文件
- **`sed` 分隔符不一定是 `/`**,遇到 URL 这种含斜杠的内容时用 `s#原内容#新内容#` 更方便
- **`AllowUnsupportedDBVersions=1`** 可以跳过数据库版本校验,适合用较新数据库版本的情况
- **Zabbix 前端需要 `en_US.UTF-8` 语言包**,最小化安装的系统可能要手动装
---
## 验证是否跑起来了
```bash
# 三个服务都看看状态
sudo systemctl status zabbix-server zabbix-agent apache2
# 翻翻日志有没有报错
sudo tail -20 /var/log/zabbix/zabbix_server.log
```
然后浏览器访问页面,用默认账号登进去,去"数据采集 -> 主机"里瞅一眼
本机那个 ZBX 图标变绿就说明整套东西跑通了。