#! /bin/bash . /usr/src/k_framework/main.sh # ---- VARS ----- VERSION="1.0.2" SCRIPT_NAME="Zabbix MySQL setup" MYSQL_ROOT_PASSWORD="" MYSQL_ROOT_PASSWORD_KNOWN=1 # ---- FUNCTIONS ----- get_mysql_root_password() { local ret_value=0 if [[ $(timeout 5 /usr/bin/mysql -h "$DB_HOST" -u root -sNe "select 1 from dual" 2>/dev/null;) == 1 ]]; then MYSQL_ROOT_PASSWORD="" elif [[ $(timeout 5 /usr/bin/mysql -h "$DB_HOST" -u root --password=kolmisoft -sNe "select 1 from dual" 2>/dev/null) == 1 ]]; then MYSQL_ROOT_PASSWORD="kolmisoft" else MYSQL_ROOT_PASSWORD="" MYSQL_ROOT_PASSWORD_KNOWN=0 ret_value=1 fi if /usr/bin/timeout 5 /usr/bin/mysql -V | grep -Eq 'Distrib 5\.[15]'; then if ((MYSQL_ROOT_PASSWORD_KNOWN==1)); then if [[ $MYSQL_ROOT_PASSWORD == "" ]]; then P_R_OPT="" else P_R_OPT="-p$MYSQL_ROOT_PASSWORD" fi else P_R_OPT="-p" fi else if ((MYSQL_ROOT_PASSWORD_KNOWN==1)); then P_R_OPT="" else P_R_OPT="-p" fi fi return $ret_value } # ---- MAIN ----- k_start k_config_details if [[ $DB_HOST != 127.0.0.1 ]] && [[ $DB_HOST != localhost ]]; then report "This script works only with local DBs" 1 report "DB_HOST is set to $DB_HOST. Exiting" 3 k_exit 1 fi if ! get_mysql_root_password; then report "Neither , nor works for mysql root password" report "Enter correct root password or press Ctrl-C" fi if [[ $DB_PRESENT == 1 ]]; then if ! [[ $(/usr/bin/mysql -h "127.0.0.1" -u zbx_monitor -pbG6XgrYRUh7mj9hRp5JfjtgV -sNe 'select 1 from dual' 2>/dev/null) == 1 ]]; then if ! MYSQL_PWD="$MYSQL_ROOT_PASSWORD" /usr/bin/mysql -h "$DB_HOST" -u root $P_R_OPT -sNe "CREATE USER 'zbx_monitor'@'127.0.0.1' IDENTIFIED BY 'bG6XgrYRUh7mj9hRp5JfjtgV';"; then report "Failed to create user [zbx_monitor@127.0.0.1] for zabbix monitoring" 1 EXIT_CODE=1 else report "User [zbx_monitor@127.0.0.1] has been created for zabbix monitoring" 0 fi else report "User [zbx_monitor@127.0.0.1] with correct password already exits" 0 fi grants=$(MYSQL_PWD="$MYSQL_ROOT_PASSWORD" /usr/bin/mysql -h "$DB_HOST" -u root $P_R_OPT -sNe "SHOW GRANTS FOR zbx_monitor@127.0.0.1;" 2>/dev/null) if [[ $(echo "$grants" | tr ',' '\n' | grep -Ec 'REPLICATION CLIENT|PROCESS|SHOW DATABASES|SHOW VIEW') -lt 4 ]]; then if ! MYSQL_PWD="$MYSQL_ROOT_PASSWORD" /usr/bin/mysql -h "$DB_HOST" -u root $P_R_OPT -sNe "GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'127.0.0.1';"; then report "Failed to create Creating GRANTS [REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW for ['zbx_monitor'@'127.0.0.1']" 1 EXIT_CODE=1 else report "GRANTS [REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW] have been created for ['zbx_monitor'@'127.0.0.1']" 0 fi else report "Correct grants for ['zbx_monitor'@'127.0.0.1'] already exits" 0 fi fi k_exit $EXIT_CODE