Я пытаюсь запустить
sudo mysqldump
с учетной записью пользователя, но получаю: Permission denied
сообщение
Если я переключаюсь на sudo su
, то это работает.
Вопрос в том, почему sudo
дает разрешение отказано? я должен дать некоторые другие привилегии для моей учетной записи пользователя?
Попробуйте сохранить дамп в домашний каталог пользователя
, например. mysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql
mysqldump
на производственном сервере не работает с sudo. Пожалуйста, попробуйте это:
$ sudo su
# mysqldump database> database.sql
Убедитесь, что вы указали путь назначения.
Например: sudo mysql -u YourUsername -p DatabaseName > ~/Path/Where/you/Want/The/Dump/FiletoBe/Kept/dumpfile.sql
Добавьте разрешения на запись в папку, в которую вы хотите создать файл sql:
sudo chmod 755 folder_url
и выполните:
mysqldump -u user -p db_name > db_dump.sql
mysqldump требует имя пользователя текущего пользователя, иначе он получит root по умолчанию. Когда вы делаете aisi su, вы автоматически предоставляете root-доступ. Попробуйте это с вашим именем пользователя вместо пользователя. mysqldump -u user -p
Введите пароль при появлении запроса.
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 в скрипте, независимо от всех вышеупомянутых
Это действительно работало на меня:
mysqldump -u {db_user} -p --databases {db_name} > /home/$USER/my.dump.sql