#!/bin/bash
#BY Kyxuan


# 定义密码变量
DB_ROOT_PASSWORD="MySQL Root 密码"
DB_ZABBIX_PASSWORD="MySQL zabbix 密码"




# 更新系统并安装必要的软件包
dnf -y install wget vim net-tools epel-release
sed -i '/^\[epel\]/a\excludepkgs=zabbix*' "/etc/yum.repos.d/epel.repo"

#获取ip
IP=`ip a |grep -w inet| grep -v 127 |awk '{print $2}'|sed 's/\/.*//'`

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0

# 添加 Zabbix 源
rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/centos/9/noarch/zabbix-release-latest-7.2.el9.noarch.rpm
dnf clean all

# 添加 MySQL 源并导入公钥
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023 https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
dnf clean all

# 安装 MySQL
dnf install -y mysql-community-server

# 启动并设置 MySQL 开机自启
systemctl enable mysqld
systemctl start mysqld

# 获取 MySQL 初始临时密码
TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')

# 使用初始密码登录并修改 root 密码
mysql --connect-expired-password -uroot -p"${TEMP_PASSWORD}" <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASSWORD}';
EOF

# 安装 Zabbix server, Web 前端, agent 及相关依赖
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

# 创建 Zabbix 初始数据库
mysql -uroot -p"${DB_ROOT_PASSWORD}" <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '${DB_ZABBIX_PASSWORD}';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
EOF

# 导入初始架构和数据
zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p"${DB_ZABBIX_PASSWORD}" zabbix

# 禁用 log_bin_trust_function_creators
mysql -uroot -p"${DB_ROOT_PASSWORD}" <