Я использую команду mysqldump для вывода некоторой информации из таблиц sql. Для этого я прочитал о mysqldump. Затем для теста я сделал прямую команду, которая будет работать в терминальной оболочке. Эта команда успешно дала результат, который мне был нужен. Затем после этого я должен реализовать команду в своем коде приложения. Мое заявление в Голанге. Используя exec.Command()
, я смогу выполнить эту команду. Но при выполнении команды возникает ошибка времени выполнения. Ошибка, с которой я сталкиваюсь в терминале:
состояние выхода 2: mysqldump: получена ошибка: 1044: «Отказано в доступе пользователю '' @ 'localhost' к базе данных 'db_name'" при выборе базы данных
Команда, которую я использовал:
прямая команда, которая дает результат успеха
sudo mysqldump -h 127.0.0.1 --no-create-info db_name table_name --where='id=1121' > /path/of/file/php1_dump.sql
код, который я использую в golang:
cmd := exec.Command("sh", "-c", "mysqldump -h 127.0.0.1 --no-create-info db_name table_name --where='id=1121' > /home/iron/go/php1_dump.sql")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run() // give the above error I mentioned
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
fmt.Println("errrrrrrrrrrrrrrrrrrrr", err) // exit status 2
}
fmt.Println("Result: " + out.String())
Я также попробовал следующие команды:
sudo mysqldump -h 127.0.0.1 -u root -p --no-create-info bk_admin wp_merchants --where='id=1121' > /home/iron/go/php1_dump.sql
Приведенная выше команда попросит ввести пароль. Но я не установил пароль phpmysqladmin:
Пожалуйста, скажите мне, где я делаю это неправильно?