From 4945db5817545099343885b06acd6aab4812428c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 25 Jun 2017 11:07:13 +0100 Subject: [PATCH] Improve remote restore of mariadb --- src/freedombone-restore-local | 9 --------- src/freedombone-restore-remote | 14 +++++++++----- src/freedombone-utils-database | 11 ++++++++++- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/freedombone-restore-local b/src/freedombone-restore-local index 40fdb45f..b6b0ad7b 100755 --- a/src/freedombone-restore-local +++ b/src/freedombone-restore-local @@ -249,15 +249,6 @@ function restore_letsencrypt { fi } -function store_original_mariadb_password { - if [ ! -f /root/.mariadboriginal ]; then - echo $'Storing original mariadb password' - ORIGINAL_MARIADB_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb) - # We can store this in plaintext because it will soon be of historical interest only - echo -n "$ORIGINAL_MARIADB_PASSWORD" > /root/.mariadboriginal - fi -} - function restore_passwordstore { if [[ $RESTORE_APP != 'all' ]]; then if [[ $RESTORE_APP != 'passwords' ]]; then diff --git a/src/freedombone-restore-remote b/src/freedombone-restore-remote index bcaacdb2..88ab638e 100755 --- a/src/freedombone-restore-remote +++ b/src/freedombone-restore-remote @@ -185,13 +185,16 @@ function restore_mariadb { temp_restore_dir=/root/tempmariadb restore_directory_from_friend $temp_restore_dir mariadb + store_original_mariadb_password + echo $'Obtaining MariaDB password' - db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb) + db_pass=$(cat /root/.mariadboriginal) if [ ${#db_pass} -gt 0 ]; then echo $"Restore the MariaDB user table" - mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) if [ ! "$?" = "0" ]; then echo $"Try again using the password obtained from backup" + db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb) mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) fi if [ ! "$?" = "0" ]; then @@ -200,9 +203,9 @@ function restore_mariadb { fi echo $"Restarting database" systemctl restart mariadb - echo $"Change the MariaDB password to the backup version" - DATABASE_PASSWORD="$db_pass" - ${PROJECT_NAME}-pass -u root -a mariadb -p "$DATABASE_PASSWORD" + echo $"Ensure MariaDB handles authentication" + MARIADB_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb) + mariadb_fix_authentication fi rm -rf ${temp_restore_dir} fi @@ -227,6 +230,7 @@ function restore_passwordstore { fi fi if [ -d $SERVER_DIRECTORY/backup/passwordstore ]; then + store_original_mariadb_password echo $"Restoring password store" restore_directory_from_friend / passwordstore fi diff --git a/src/freedombone-utils-database b/src/freedombone-utils-database index b1f8b84a..25280546 100755 --- a/src/freedombone-utils-database +++ b/src/freedombone-utils-database @@ -13,7 +13,7 @@ # License # ======= # -# Copyright (C) 2014-2016 Bob Mottram +# Copyright (C) 2014-2017 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -34,6 +34,15 @@ MARIADB_PASSWORD= # Used to indicate whether the backup contains MariaDB databases or not BACKUP_INCLUDES_DATABASES="no" +function store_original_mariadb_password { + if [ ! -f /root/.mariadboriginal ]; then + echo $'Storing original mariadb password' + ORIGINAL_MARIADB_PASSWORD=$(${PROJECT_NAME}-pass -u root -a mariadb) + # We can store this in plaintext because it will soon be of historical interest only + echo -n "$ORIGINAL_MARIADB_PASSWORD" > /root/.mariadboriginal + fi +} + function keep_database_running { if [ ! $(daemon_is_running mariadb) ]; then systemctl start mariadb