#!/bin/sh # vim: syntax=sh set -euo pipefail echo "Create vault user" mysql <<_EOSQL CREATE USER IF NOT EXISTS 'vault'@'%' IDENTIFIED BY '${VAULT_INITIAL_PASSWORD}'; GRANT ALL PRIVILEGES ON *.* TO 'vault'@'%' WITH GRANT OPTION; _EOSQL echo "Create databases" for IDX in $(printenv | grep -E '^MY_DB_([0-9]+)=' | sed -E 's/^MY_DB_([0-9]+)=.*/\1/'); do DB_NAME=$(printenv MY_DB_${IDX}) echo "Found DB ${DB_NAME} to create" DB_CHARSET=$(printenv MY_DB_${IDX}_CHARSET || echo "utf8mb4") DB_COLLATE=$(printenv MY_DB_${IDX}_COLLATE || echo "utf8mb4_general_ci") echo "Create database ${DB_NAME} (CHARACTER SET \"${DB_CHARSET}\" COLLATE \"${DB_COLLATE}\") if needed" mysql <<_EOSQL CREATE DATABASE IF NOT EXISTS ${DB_NAME} CHARACTER SET "${DB_CHARSET}" COLLATE "${DB_COLLATE}" _EOSQL done echo "Create users" for IDX in $(printenv | grep -E '^MY_USER_([0-9]+)=' | sed -E 's/^MY_USER_([0-9]+)=.*/\1/'); do DB_USER=$(printenv MY_USER_${IDX}) echo "Found DB User ${DB_USER} to create" DB_HOST=$(printenv MY_USER_${IDX}_HOST || echo '%') DB_PASSWORD=$(printenv MY_USER_${IDX}_PASSWORD || echo '') if [ "${DB_PASSWORD}" = "" ]; then mysql <<_EOSQL CREATE USER IF NOT EXISTS '${DB_USER}'@'${DB_HOST}'; _EOSQL else mysql <<_EOSQL CREATE USER IF NOT EXISTS '${DB_USER}'@'${DB_HOST}' IDENTIFIED BY '${DB_PASSWORD}'; _EOSQL fi echo "Applying grants for ${DB_USER}" for GRANT in $(printenv | grep -E "^MY_USER_${IDX}_GRANT_([0-9]+)=)" | sed -E "s/^MY_USER_${IDX}_GRANT_([0-9]+)=.*/\1/"); do mysql <<_EOSQL GRANT $(printenv MY_USER_${IDX}_GRANT_${GRANT}); _EOSQL done done