Невозможно использовать файл views.py для выгрузки базы данных mysql - PullRequest
0 голосов
/ 15 августа 2011

Кажется, у меня проблема. Я хочу посмотреть, где я могу позволить штатным пользователям загружать базу данных MySQL для этой программы. К сожалению, это не работает. Я обнаружил, что проблема кажется трудной.

Views.py

@login_required
def dbbackup(request):
    if not (request.user.is_authenticated() and request.user.is_staff):
        raise http.Http404
    os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql")
    os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz"
    return HttpResponseRedirect("/mmc")

Я пытался устранить проблему. Это сбой в той части, где он сбрасывает данные - поскольку в c2duo_mms отсутствует файл sql.

Теперь, если бы мне нужно было создать отдельный скрипт на python, запуск с использованием python test.py сработает. Так почему же он не может работать в моем файле views.py или Django.

test.py

#!/usr/bin/env python

from django.conf import settings
import os

os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql")
os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz")

Также вот разрешение моей папки c2duo_mms. Все файлы имеют одинаковые права доступа. Я не думаю, что это связано с разрешениями. Я также проверяю, что я использую полные пути к каталогам.

drwxr-xr-x 5 root root 4096 Aug 15 12:40 c2duo_mms

1 Ответ

2 голосов
/ 15 августа 2011

Возможно, веб-сервер работает от имени другого пользователя, нежели пользователь root, поэтому у него нет прав для создания файла.

...