Как решить mysqldump Получил ошибку: 1044: "Доступ запрещен для пользователя '' @ 'localhost' к базе данных 'db_name'" при выборе базы данных - PullRequest
0 голосов
/ 01 июля 2019

Я использую команду 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:

User accounts overview page: all accounts have Password: No

Пожалуйста, скажите мне, где я делаю это неправильно?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Я тоже столкнулся с этой же проблемой. Я думаю, вам придется создать нового пользователя в phpmyadmin -> users_account с действительными username и password. Также проверьте все привилегии. Надеюсь, это поможет вам.

0 голосов
/ 01 июля 2019

Он предлагает вам указать пароль, потому что вы его попросили.

Сначала пропустите -p в вашей команде.

Использовать

- skip-пароль

Чтобы явно указать, что пароль отсутствует и что mysqldump не должен запрашивать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...