Skip to content

Commit b9d84ca

Browse files
committed
dhi helper
add mysql setup script for user for dhi images on k8s
1 parent a7abd95 commit b9d84ca

2 files changed

Lines changed: 63 additions & 2 deletions

File tree

conf/mysql-setup-preparation.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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

dhi.alpine.helper.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ echo $?
1616
EOF
1717

1818
COPY conf/wsc-setup-preparation.sh /usr/local/bin/wsc-setup-preparation.sh
19+
COPY conf/mysql-setup-preparation.sh /usr/local/bin/mysql-setup-preparation.sh
1920

2021
RUN chmod +x /usr/local/bin/*.sh
2122

@@ -52,8 +53,7 @@ RUN \
5253
# List directory and file structure
5354
#RUN tree /apkroot
5455

55-
COPY --from=dev-alpine /usr/local/bin/php-fpm-healthcheck.sh /apkroot/usr/local/bin/php-fpm-healthcheck.sh
56-
COPY --from=dev-alpine /usr/local/bin/wsc-setup-preparation.sh /apkroot/usr/local/bin/wsc-setup-preparation.sh
56+
COPY --from=dev-alpine /usr/local/bin/ /apkroot/usr/local/bin/
5757

5858
RUN tree /apkroot
5959

0 commit comments

Comments
 (0)