48 lines
1.6 KiB
Smarty
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
|