sudo mysqldump: в доступе отказано

Я пытаюсь запустить

sudo mysqldump

с учетной записью пользователя, но получаю: Permission denied сообщение

Если я переключаюсь на sudo su, то это работает.

Вопрос в том, почему sudo дает разрешение отказано? я должен дать некоторые другие привилегии для моей учетной записи пользователя?

4
задан 17 November 2013 в 16:52

7 ответов

Попробуйте сохранить дамп в домашний каталог пользователя

, например. mysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql

0
ответ дан 17 November 2013 в 16:52

mysqldump на производственном сервере не работает с sudo. Пожалуйста, попробуйте это:

$ sudo su
# mysqldump database> database.sql
0
ответ дан 17 November 2013 в 16:52

Убедитесь, что вы указали путь назначения.

Например: sudo mysql -u YourUsername -p DatabaseName > ~/Path/Where/you/Want/The/Dump/FiletoBe/Kept/dumpfile.sql

0
ответ дан 17 November 2013 в 16:52

Добавьте разрешения на запись в папку, в которую вы хотите создать файл sql:

sudo chmod 755 folder_url

и выполните:

mysqldump -u user -p db_name > db_dump.sql

0
ответ дан 17 November 2013 в 16:52

mysqldump требует имя пользователя текущего пользователя, иначе он получит root по умолчанию. Когда вы делаете aisi su, вы автоматически предоставляете root-доступ. Попробуйте это с вашим именем пользователя вместо пользователя. mysqldump -u user -p Введите пароль при появлении запроса.

0
ответ дан 17 November 2013 в 16:52

mysqldump потребуется пароль для пользователя root mysql. Если вы не введете этот пароль, он не будет работать, sudo или без sudo.

mysqldump может посмотреть ваш файл .my.cnf, чтобы получить пароль, и он получит его от пользователя, выполняющего команду mysqldump. Итак, если у пользователя root в Linux есть .my.cnf, настроенный с паролем, то да, sudo поможет. Однако, если у пользователя root mysql есть пароль и он не настроен ни в одном .my.cnf, sudo не поможет.

Вы можете добавить пользователя root и пароль mysql к своему собственному пользователю .my.cnf, и тогда вам также не понадобится sudo, но это угроза безопасности.

Как и в других ответах, вам может понадобиться sudo, чтобы записать выходные данные где-нибудь, которым владеет root (Linux, а не mysql).

Наконец, вы не говорите нам, какой пользователь выполняет скрипт, если он находится в crontab root (например), тогда sudo не понадобится, хотя вам все равно может понадобиться .my.cnf для предоставления пароля.

Если у вашего пользователя root mysql пароль не установлен, единственной проблемой является запись выходных данных, и в этом случае sudo требуется, если вы не запускаете скрипт от имени root.

Если вы запускаете скрипт как root (например, как скрипт в /etc/cron.daily), то вам не следует использовать sudo в скрипте, независимо от всех вышеупомянутых

credit

0
ответ дан 17 November 2013 в 16:52

Это действительно работало на меня:

mysqldump -u {db_user} -p --databases {db_name} > /home/$USER/my.dump.sql
1
ответ дан 9 October 2019 в 11:46

Другие вопросы по тегам:

Похожие вопросы: