1+ #! /bin/sh
2+
3+ : " ${MYSQL_SETUP_ENABLED:= " 0" } " # set to 1 to enable
4+ : " ${MYSQL_HOST:= " " } " # set Host of MySQL/MariaDB Server
5+ : " ${MYSQL_PORT:= " 3306" } " # set Port of MySQL/MariaDB Server
6+ : " ${MYSQL_ROOT_PASSWORD:= " " } " # set MySQL Root Password
7+ : " ${MYSQL_DATABASE:= " " } " # set Databasename for User
8+ : " ${MYSQL_USER:= " " } " # set Username
9+ : " ${MYSQL_PASSWORD:= " " } " # set Password for User
10+ : " ${MYSQL_EXPORTER_USER:= " exporter" } " # set Exporter-Username, default: exporter
11+ : " ${MYSQL_EXPORTER_PASSWORD:= " " } " # set Password for Exporter-Username
12+ : " ${MYSQL_EXPORTER_MAXUSERCONNECTIONS:= " 0" } " # max connection, set to 0 for unlimited, recommended: 3
13+
14+ host=' %' # set '%' to allow from all host
15+ options=' --skip-ssl-verify-server-cert'
16+
17+ if [ " $MYSQL_SETUP_ENABLED " -eq " 1" -a -n " $MYSQL_HOST " -a -n " $MYSQL_PORT " -a -n " $MYSQL_ROOT_PASSWORD " ]; then
18+ echo " >> MySQL Setup preparation on Host ${MYSQL_HOST} and Port ${MYSQL_PORT} ..."
19+
20+ echo " >> MySQL waiting for Server ..."
21+ until mariadb-admin ping -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} --skip-verbose --silent > /dev/null 2>&1 ; do
22+ sleep 2
23+ done
24+ echo " >> MySQL Server ready ..."
25+
26+ # User
27+ if [ -n " $MYSQL_USER " -a -n " $MYSQL_PASSWORD " -a -n " $MYSQL_DATABASE " ]; then
28+ echo " >> MySQL Database (${MYSQL_DATABASE} ) and User (${MYSQL_USER} ) ..."
29+ mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -sNe \
30+ " SELECT user FROM mysql.user WHERE user = '${MYSQL_USER} ' GROUP BY user;" \
31+ | grep -q ${MYSQL_USER} \
32+ || mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -sN << EOSQL
33+ CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} ;
34+ CREATE USER IF NOT EXISTS '${MYSQL_USER} '@'${host} ' IDENTIFIED BY '${MYSQL_PASSWORD} ';
35+ GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE} .* TO '${MYSQL_USER} '@'${host} ';
36+ FLUSH PRIVILEGES;
37+ EOSQL
38+ else
39+ echo " >> MySQL Database (${MYSQL_DATABASE} ) and User (${MYSQL_USER} ) skipped."
40+ fi
41+
42+ # Exporter
43+ if [ -n " $MYSQL_EXPORTER_USER " -a -n " $MYSQL_EXPORTER_PASSWORD " -a -n " $MYSQL_EXPORTER_MAXUSERCONNECTIONS " ]; then
44+ echo " >> MySQL Exporter-User (${MYSQL_EXPORTER_USER} ) ..."
45+ mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -sNe \
46+ " SELECT user FROM mysql.user WHERE user = '${MYSQL_EXPORTER_USER} ' GROUP BY user;" \
47+ | grep -q ${MYSQL_EXPORTER_USER} \
48+ || mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -sN << EOSQL
49+ CREATE USER IF NOT EXISTS '${MYSQL_EXPORTER_USER} '@'${host} ' IDENTIFIED BY '${MYSQL_EXPORTER_PASSWORD} ' WITH MAX_USER_CONNECTIONS ${MYSQL_EXPORTER_MAXUSERCONNECTIONS} ;
50+ GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '${MYSQL_EXPORTER_USER} '@'${host} ';
51+ FLUSH PRIVILEGES;
52+ EOSQL
53+ else
54+ echo " >> MySQL Exporter-User (${MYSQL_EXPORTER_USER} ) skipped."
55+ fi
56+
57+ # checks
58+ echo " >> MySQL checks:"
59+ mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -e ' SELECT user, host, max_user_connections FROM mysql.user;'
60+ mariadb -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u root --password=" ${MYSQL_ROOT_PASSWORD} " ${options} -e ' SELECT host, user, db FROM mysql.db;'
61+ fi
0 commit comments