diff --git a/docker/Dockerfile b/docker/Dockerfile index d495405..b87fc10 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,7 +36,7 @@ ENV TARGET_DB_NAME="localhost" ENV TARGET_DB_USERNAME="" ENV TARGET_DB_PASSWORD="" ARG DEBIAN_FRONTEND=noninteractive -ENV VERSION="v1.2.5" +ENV VERSION="v1.2.7" ENV BACKUP_CRON_EXPRESSION="" ENV TG_TOKEN="" ENV TG_CHAT_ID="" diff --git a/pkg/backup.go b/pkg/backup.go index 6bdcb74..e6d34df 100644 --- a/pkg/backup.go +++ b/pkg/backup.go @@ -132,6 +132,10 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool } utils.Info("Starting database backup...") + err = os.Setenv("MYSQL_PWD", db.dbPassword) + if err != nil { + return + } testDatabaseConnection(db) // Backup Database database @@ -143,7 +147,6 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool "-h", db.dbHost, "-P", db.dbPort, "-u", db.dbUserName, - "--password="+db.dbPassword, db.dbName, ) output, err := cmd.Output() @@ -166,7 +169,7 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool } else { // Execute mysqldump - cmd := exec.Command("mysqldump", "-h", db.dbHost, "-P", db.dbPort, "-u", db.dbUserName, "--password="+db.dbPassword, db.dbName) + cmd := exec.Command("mysqldump", "-h", db.dbHost, "-P", db.dbPort, "-u", db.dbUserName, db.dbName) stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal(err) diff --git a/pkg/helper.go b/pkg/helper.go index a161f04..425b439 100644 --- a/pkg/helper.go +++ b/pkg/helper.go @@ -107,16 +107,17 @@ func deleteTemp() { // TestDatabaseConnection tests the database connection func testDatabaseConnection(db *dbConfig) { - + err := os.Setenv("MYSQL_PWD", db.dbPassword) + if err != nil { + return + } utils.Info("Connecting to %s database ...", db.dbName) - - cmd := exec.Command("mysql", "-h", db.dbHost, "-P", db.dbPort, "-u", db.dbUserName, "--password="+db.dbPassword, db.dbName, "-e", "quit") - + cmd := exec.Command("mysql", "-h", db.dbHost, "-P", db.dbPort, "-u", db.dbUserName, db.dbName, "-e", "quit") // Capture the output var out bytes.Buffer cmd.Stdout = &out cmd.Stderr = &out - err := cmd.Run() + err = cmd.Run() if err != nil { utils.Fatal("Error testing database connection: %v\nOutput: %s", err, out.String()) diff --git a/pkg/restore.go b/pkg/restore.go index ea54a92..16bd321 100644 --- a/pkg/restore.go +++ b/pkg/restore.go @@ -95,13 +95,17 @@ func RestoreDatabase(db *dbConfig, file string) { } if utils.FileExists(fmt.Sprintf("%s/%s", tmpPath, file)) { + err = os.Setenv("MYSQL_PWD", db.dbPassword) + if err != nil { + return + } testDatabaseConnection(db) utils.Info("Restoring database...") extension := filepath.Ext(fmt.Sprintf("%s/%s", tmpPath, file)) // Restore from compressed file / .sql.gz if extension == ".gz" { - str := "zcat " + fmt.Sprintf("%s/%s", tmpPath, file) + " | mysql -h " + db.dbHost + " -P " + db.dbPort + " -u " + db.dbUserName + " --password=" + db.dbPassword + " " + db.dbName + str := "zcat " + filepath.Join(tmpPath, file) + " | mysql -h " + db.dbHost + " -P " + db.dbPort + " -u " + db.dbUserName + " " + db.dbName _, err := exec.Command("bash", "-c", str).Output() if err != nil { utils.Fatal("Error, in restoring the database %v", err) @@ -113,20 +117,20 @@ func RestoreDatabase(db *dbConfig, file string) { } else if extension == ".sql" { //Restore from sql file - str := "cat " + fmt.Sprintf("%s/%s", tmpPath, file) + " | mysql -h " + db.dbHost + " -P " + db.dbPort + " -u " + db.dbUserName + " --password=" + db.dbPassword + " " + db.dbName + str := "cat " + filepath.Join(tmpPath, file) + " | mysql -h " + db.dbHost + " -P " + db.dbPort + " -u " + db.dbUserName + " " + db.dbName _, err := exec.Command("bash", "-c", str).Output() if err != nil { - utils.Fatal(fmt.Sprintf("Error in restoring the database %s", err)) + utils.Fatal("Error in restoring the database %v", err) } utils.Info("Restoring database... done") utils.Done("Database has been restored") //Delete temp deleteTemp() } else { - utils.Fatal(fmt.Sprintf("Unknown file extension %s", extension)) + utils.Fatal("Unknown file extension %s", extension) } } else { - utils.Fatal(fmt.Sprintf("File not found in %s", fmt.Sprintf("%s/%s", tmpPath, file))) + utils.Fatal("File not found in %s", filepath.Join(tmpPath, file)) } } diff --git a/pkg/scripts.go b/pkg/scripts.go index 4390cf0..cac17a8 100644 --- a/pkg/scripts.go +++ b/pkg/scripts.go @@ -26,8 +26,8 @@ func CreateCrontabScript(disableCompression bool, storage string) { scriptContent := fmt.Sprintf(`#!/usr/bin/env bash set -e -/usr/local/bin/mysql-bkup backup --dbname %s --port %s --storage %s %v -`, os.Getenv("DB_NAME"), os.Getenv("DB_PORT"), storage, disableC) +/usr/local/bin/mysql-bkup backup --dbname %s --storage %s %v +`, os.Getenv("DB_NAME"), storage, disableC) if err := utils.WriteToFile(backupCronFile, scriptContent); err != nil { utils.Fatal("Error writing to %s: %v\n", backupCronFile, err)