Fix: Using a password on the command line interface can be insecure warning message

This commit is contained in:
Jonas Kaninda
2024-09-28 02:25:42 +02:00
parent e1307250e8
commit b205cd61ea
3 changed files with 15 additions and 9 deletions

View File

@@ -132,6 +132,10 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool
} }
utils.Info("Starting database backup...") utils.Info("Starting database backup...")
err = os.Setenv("MYSQL_PWD", db.dbPassword)
if err != nil {
return
}
testDatabaseConnection(db) testDatabaseConnection(db)
// Backup Database database // Backup Database database
@@ -143,7 +147,6 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool
"-h", db.dbHost, "-h", db.dbHost,
"-P", db.dbPort, "-P", db.dbPort,
"-u", db.dbUserName, "-u", db.dbUserName,
"--password="+db.dbPassword,
db.dbName, db.dbName,
) )
output, err := cmd.Output() output, err := cmd.Output()
@@ -166,7 +169,7 @@ func BackupDatabase(db *dbConfig, backupFileName string, disableCompression bool
} else { } else {
// Execute mysqldump // 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() stdout, err := cmd.StdoutPipe()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)

View File

@@ -110,8 +110,7 @@ func testDatabaseConnection(db *dbConfig) {
utils.Info("Connecting to %s database ...", db.dbName) 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 // Capture the output
var out bytes.Buffer var out bytes.Buffer
cmd.Stdout = &out cmd.Stdout = &out

View File

@@ -95,13 +95,17 @@ func RestoreDatabase(db *dbConfig, file string) {
} }
if utils.FileExists(fmt.Sprintf("%s/%s", tmpPath, file)) { if utils.FileExists(fmt.Sprintf("%s/%s", tmpPath, file)) {
err = os.Setenv("MYSQL_PWD", db.dbPassword)
if err != nil {
return
}
testDatabaseConnection(db) testDatabaseConnection(db)
utils.Info("Restoring database...") utils.Info("Restoring database...")
extension := filepath.Ext(fmt.Sprintf("%s/%s", tmpPath, file)) extension := filepath.Ext(fmt.Sprintf("%s/%s", tmpPath, file))
// Restore from compressed file / .sql.gz // Restore from compressed file / .sql.gz
if extension == ".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() _, err := exec.Command("bash", "-c", str).Output()
if err != nil { if err != nil {
utils.Fatal("Error, in restoring the database %v", err) utils.Fatal("Error, in restoring the database %v", err)
@@ -113,20 +117,20 @@ func RestoreDatabase(db *dbConfig, file string) {
} else if extension == ".sql" { } else if extension == ".sql" {
//Restore from sql file //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() _, err := exec.Command("bash", "-c", str).Output()
if err != nil { 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.Info("Restoring database... done")
utils.Done("Database has been restored") utils.Done("Database has been restored")
//Delete temp //Delete temp
deleteTemp() deleteTemp()
} else { } else {
utils.Fatal(fmt.Sprintf("Unknown file extension %s", extension)) utils.Fatal("Unknown file extension %s", extension)
} }
} else { } 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))
} }
} }