mariadb/templates/manage.sh.tpl

48 lines
1.6 KiB
Smarty

#!/bin/sh
# vim: syntax=sh
set -euo pipefail
echo "Creating 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 "Creating 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