os / exec将mysql数据转储到文件

Hi guys its almost 3AM here in London and I am losing this fight. I am trying to dump a mysql database into a sql file. It works fine from the command line but not when I try to do the same from Go (using the os/exec library). I have tried almost everything my stupid head could come up with... It works fine with echo command, but it completely ignores mysqldump. Could you please point me in the right direction?

package main

import (
    "os/exec"
    "log"
    "bufio"
    "os"
    "io"
)

func main() {
    // This Doesn't
    // cmd := exec.Command("mysqldump", "-P3306 -hhost -uuser -ppassword database_name")
    // This Works
    cmd := exec.Command("echo", "Hello World bla bla")
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }

    outfile, err := os.Create("./out.sql")
    if err != nil {
        log.Fatal(err)
    }
    defer outfile.Close()

    // start the command after having set up the pipe
    if err := cmd.Start(); err != nil {
        log.Fatal(err)
    }

    // read command's stdout line by line
    in := bufio.NewWriter(outfile)
    defer in.Flush()

    io.Copy(outfile, stdout)
}

use this ( separate Args):

cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name")

my test sample code:

package main

import (
    "io/ioutil"
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name")
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }

    if err := cmd.Start(); err != nil {
        log.Fatal(err)
    }

    bytes, err := ioutil.ReadAll(stdout)
    if err != nil {
        log.Fatal(err)
    }
    err = ioutil.WriteFile("./out.sql", bytes, 0644)
    if err != nil {
        panic(err)
    }

}

cmd := exec.Command("mysqldump", "-P3306", "-hhost", "-uuser", "-ppassword", "database_name" "table_name") Just add the table name w