|
| 1 | +#!/bin/bash |
| 2 | +set -o pipefail |
| 3 | + |
| 4 | +# set -x (bash debug) if log level is trace |
| 5 | +# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/log-helper |
| 6 | +log-helper level eq trace && set -x |
| 7 | + |
| 8 | +if [ -z "${MARIADB_HOST}" ]; then |
| 9 | + log-helper error "Error: MARIADB_HOST must be set." |
| 10 | + exit 0 |
| 11 | +fi |
| 12 | + |
| 13 | +if [ -z "${MARIADB_FROM_DATABASE}" ] || [ -z "${MARIADB_TO_DATABASE}" ]; then |
| 14 | + log-helper error "Error: MARIADB_FROM_DATABASE and MARIADB_TO_DATABASE must be set." |
| 15 | + exit 0 |
| 16 | +fi |
| 17 | + |
| 18 | +if [ -z "${MARIADB_ROOT_USER}" ] || [ -z "${MARIADB_ROOT_PASSWORD}" ]; then |
| 19 | + log-helper error "Error: MARIADB_ROOT_USER and MARIADB_ROOT_PASSWORD must be set." |
| 20 | + exit 0 |
| 21 | +fi |
| 22 | + |
| 23 | +MARIADB_SSL_CMD_ARGS="" |
| 24 | + |
| 25 | +if [ "${MARIADB_SSL,,}" == "true" ]; then |
| 26 | + log-helper info "SSL config..." |
| 27 | + |
| 28 | + # generate a certificate and key with ssl-helper if MARIADB_SSL_CRT_FILENAME and MARIADB_SSL_KEY_FILENAME files don't exists |
| 29 | + # https://github.com/osixia/docker-light-baseimage/blob/stable/image/service-available/:ssl-tools/assets/tool/ssl-helper |
| 30 | + ssl-helper ${MARIADB_SSL_HELPER_PREFIX} "${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_CRT_FILENAME" "${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_KEY_FILENAME" "${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_CA_CRT_FILENAME" |
| 31 | + |
| 32 | + MARIADB_SSL_CMD_ARGS="--ssl --ssl-ca ${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_CA_CRT_FILENAME --ssl-cert ${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_CRT_FILENAME --ssl-key ${CONTAINER_SERVICE_DIR}/mariadb-helper/assets/certs/$MARIADB_SSL_KEY_FILENAME --ssl-cipher ${MARIADB_SSL_CIPHER_SUITE}" |
| 33 | +fi |
| 34 | + |
| 35 | +MARIADB_CMD_ARGS="-h${MARIADB_HOST} -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${MARIADB_SSL_CMD_ARGS}" |
| 36 | + |
| 37 | +log-helper info "Creating database ${MARIADB_TO_DATABASE} on host ${MARIADB_HOST}..." |
| 38 | +mysqladmin ${MARIADB_CMD_ARGS} create ${MARIADB_TO_DATABASE} |
| 39 | + |
| 40 | +CREATE_CMD_RESULT=$? |
| 41 | + |
| 42 | +if [ $CREATE_CMD_RESULT -eq 255 ]; then |
| 43 | + log-helper info "Database ${MARIADB_TO_DATABASE} already exists." |
| 44 | + exit 0 |
| 45 | +elif [ $CREATE_CMD_RESULT -eq 0 ]; then |
| 46 | + log-helper info "Database ${MARIADB_TO_DATABASE} created." |
| 47 | + |
| 48 | + if [ -n "${MARIADB_TO_DATABASE_GRANT_USER}" ]; then |
| 49 | + log-helper info "Grant user ${MARIADB_TO_DATABASE_GRANT_USER} permissions on database ${MARIADB_TO_DATABASE}..." |
| 50 | + mysql ${MARIADB_CMD_ARGS} -e "GRANT ${MARIADB_TO_DATABASE_GRANT_PRIVILEGES} ON \`${MARIADB_TO_DATABASE}\`.* TO '${MARIADB_TO_DATABASE_GRANT_USER}'@'${MARIADB_TO_DATABASE_GRANT_USER_HOST}' ;" ${MARIADB_TO_DATABASE} |
| 51 | + fi |
| 52 | + |
| 53 | + if [ -n "${MARIADB_FROM_DATABASE_REGEX}" ]; then |
| 54 | + log-helper debug "Use regex ${MARIADB_FROM_DATABASE_REGEX} on ${MARIADB_TO_DATABASE}" |
| 55 | + |
| 56 | + if ! [[ ${MARIADB_TO_DATABASE} =~ ${MARIADB_FROM_DATABASE_REGEX} ]]; then |
| 57 | + log-helper error "Enable to extract database name." |
| 58 | + exit 1 |
| 59 | + else |
| 60 | + MARIADB_FROM_DATABASE="${BASH_REMATCH[1]}${MARIADB_FROM_DATABASE}" |
| 61 | + fi |
| 62 | + fi |
| 63 | + |
| 64 | + if [ "${MARIADB_FROM_DATABASE}" == "${MARIADB_TO_DATABASE}" ]; then |
| 65 | + log-helper warning "MARIADB_FROM_DATABASE == MARIADB_TO_DATABASE == ${MARIADB_TO_DATABASE} copy aborted." |
| 66 | + else |
| 67 | + log-helper info "Copying database ${MARIADB_FROM_DATABASE} to ${MARIADB_TO_DATABASE}..." |
| 68 | + mysqldump ${MARIADB_CMD_ARGS} --no-create-db --events --triggers --routines --compress ${MARIADB_FROM_DATABASE} | mysql ${MARIADB_CMD_ARGS} ${MARIADB_TO_DATABASE} |
| 69 | + fi |
| 70 | + |
| 71 | +else |
| 72 | + log-helper info "Error." |
| 73 | + exit 1 |
| 74 | +fi |
| 75 | + |
| 76 | +log-helper info "Done." |
| 77 | + |
| 78 | +exit 0 |
0 commit comments