diff --git a/functions b/functions index 845054b..ce1e2c1 100755 --- a/functions +++ b/functions @@ -112,13 +112,13 @@ service_export() { local SERVICE="$1" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_NAME="$(get_service_name "$SERVICE")" - local DATABASE_NAME="$(get_database_name "$SERVICE")" - local PASSWORD="$(service_password "$SERVICE")" + local ROOTPASSWORD="$(service_root_password "$SERVICE")" [[ -n $SSH_TTY ]] && stty -opost - docker exec "$SERVICE_NAME" bash -c "printf '[client]\ndefault-character-set=utf8mb4\npassword=$PASSWORD\n' > /root/credentials.cnf" - docker exec "$SERVICE_NAME" mysqldump --defaults-extra-file=/root/credentials.cnf --user=mysql --single-transaction --quick "$DATABASE_NAME" - docker exec "$SERVICE_NAME" rm /root/credentials.cnf + docker exec "$SERVICE_NAME" bash -c "printf '[client]\nuser=root\npassword=$ROOTPASSWORD\n' > /root/credentials.cnf" + docker exec "$SERVICE_NAME" bash -c "printf 'show databases;' | mysql --defaults-extra-file=/root/credentials.cnf | grep -wvE 'Database|mysql|sys|information_schema|performance_schema' > databases_to_backup" + docker exec "$SERVICE_NAME" bash -c "cat databases_to_backup | xargs mysqldump --defaults-extra-file=/root/credentials.cnf --single-transaction --quick --databases" + docker exec "$SERVICE_NAME" rm /root/credentials.cnf databases_to_backup status=$? [[ -n $SSH_TTY ]] && stty opost exit $status @@ -135,7 +135,10 @@ service_import() { if [[ -t 0 ]]; then dokku_log_fail "No data provided on stdin." fi - docker exec -i "$SERVICE_NAME" mysql --user=root --password="$ROOTPASSWORD" "$DATABASE_NAME" + + docker exec "$SERVICE_NAME" bash -c "printf '[client]\nuser=root\npassword=$ROOTPASSWORD\n' > /root/credentials.cnf" + docker exec -i "$SERVICE_NAME" mysql --defaults-extra-file=/root/credentials.cnf "$DATABASE_NAME" + docker exec "$SERVICE_NAME" rm /root/credentials.cnf } service_start() {