方法一:通过Zabbix前端直接重置(需其他管理员账户)
如果有其他管理员账户登录:
登录Zabbix
进入
管理 → 用户
找到
Admin 用户,点击编辑
在
密码 标签页设置新密码
方法二:通过数据库直接修改(最常用)
MySQL/MariaDB数据库:
# 登录数据库
mysql -uzabbix -p zabbix
# 查看当前用户(可选)
SELECT alias, name, passwd FROM users WHERE alias='Admin';
# 更新密码(新密码:zabbix)
UPDATE users SET passwd=MD5('zabbix') WHERE alias='Admin';
# 或者使用更安全的SHA256(推荐)
UPDATE users SET passwd=SHA2('your_new_password', 256) WHERE alias='Admin';
PostgreSQL数据库:
# 登录数据库
sudo -u postgres psql zabbix
# 更新密码
UPDATE users SET passwd=MD5('your_new_password') WHERE alias='Admin';
方法三:使用zabbix_passwd工具
# 生成密码哈希
echo -n "your_password" | md5sum
# 或者
echo -n "your_password" | sha256sum
# 然后使用生成的哈希值更新数据库
UPDATE users SET passwd='生成的哈希值' WHERE alias='Admin';
方法四:完全重置(所有用户恢复默认)
如果完全无法访问且不知道数据库密码:
停止Zabbix服务
systemctl stop zabbix-server
重置数据库(⚠️ 危险操作,会丢失所有配置)
# 备份现有数据库
mysqldump -uzabbix -p zabbix > zabbix_backup.sql
# 重新初始化数据库
mysql -uroot -p
DROP DATABASE zabbix;
CREATE DATABASE zabbix;
GRANT ALL ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
# 导入初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
重启服务
systemctl start zabbix-server
默认密码:Admin / zabbix
方法五:通过Zabbix API重置
如果有API访问权限:
# 获取认证token
curl -X POST -H "Content-Type: application/json-rpc" -d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "another_admin",
"password": "another_admin_password"
},
"id": 1
}' http://zabbix-server/api_jsonrpc.php
# 使用token更新admin密码
curl -X POST -H "Content-Type: application/json-rpc" -d '{
"jsonrpc": "2.0",
"method": "user.update",
"params": {
"userid": "1", # admin的用户ID通常是1
"passwd": "new_password"
},
"auth": "your_auth_token",
"id": 1
}' http://zabbix-server/api_jsonrpc.php
预防措施
定期备份数据库
创建多个管理员账户
启用LDAP/AD集成认证
记录密码到安全位置
设置密码策略
注意事项
数据库密码 ≠ Zabbix登录密码
- 数据库密码用于连接数据库
- Zabbix登录密码是存储在数据库中的用户凭证
密码加密方式:
- Zabbix 5.0+ 默认使用PBKDF2
- 早期版本使用MD5
- 直接修改数据库时需确认加密方式
修改后:
- 清除浏览器缓存
- 重新登录测试
- 更新相关自动化脚本中的密码
推荐方法:使用方法二通过数据库修改,这是最可靠的方式。记得修改后立即在Zabbix前端验证登录。