1、问题描述
2018年摸索着搭建好的zabbix,原来我用于监控公司内部服务器的,但后来被业务用来监控客户的数据了,就交给运维人员,很长一段时间没登录,最近想起来了解下zabbix的服务端和客户端之间是怎么通信的,通信协议是什么,就想登录zabbix的web端,发现密码都不记得了,于是找到资料,如何修改admin的密码,只是数据库还是我管的。但是改完了发现登录不了,报错了,提示的是:zabbix@localhost无法访问之类的。看这个提示,找到数据库的mysql.user表,查询结果,确实没有了zabbix这个账号。视图创建账号是,提示mysql.user表损坏。
2、解决思路
表损坏了,首先尝试的是通过MySQL客户端连接工具,修复表,但是没有用;再备份表,然后删除,然后重新导入,发现也不行。
那就考虑迁移数据库,迁移后,改了配置 /usr/local/zabbix/etc/zabbix_server.conf里面的数据库相关从配置参数,报错的是:

3、最终解决办法
重装了MySQL,因为之前的MySQL是yum安装,所以先用yum remove 'mysql*'删除所有MySQL相关的包,然后删除配置文件,然后再通过自己的一键部署MySQL脚本安装MySQL。安装后启动zabbix_server有个错误:
error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory,
解决办法是:
执行如下命令
ls -s /usr/local/mysql/lib/libmysqlclient.so.20 /lib64/
保障zabbix_server启动正常后,再找到前端工程的配置文件/usr/local/nginx/html/zabbix/conf/zabbix.conf.php
修改数据库的配置后,重启nginx,问题解决!文件的完整内容如下,修改第一部分为实际的数据库信息:
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'xxx.xxx.xx.xx';
$DB['PORT'] = 'mysqlport';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'passwordstring';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'xxx.xxx.xx.xx';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'xxxxxx';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;




