Django - Использовать разных пользователей MySQL для manage.py против обслуживающего приложения? - PullRequest
1 голос
/ 01 апреля 2011

Кажется, что для manage.py требуется больше прав доступа к базе данных (например, index, drop, create), чем моему приложению Django в повседневном использовании.

Есть ли способ указать ему использовать одного пользователя для команд manage.py, а затем использовать более ограниченного пользователя для фактического запуска приложения?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Я думаю, что вы должны иметь возможность использовать один и тот же БД дважды с разными пользователями через конфигурацию нескольких баз данных django

, например

DATABASES = {
'default': {
    'NAME': 'app_data',
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'USER': 'user',
    'PASSWORD': ''
},
'default_root': {
    'NAME': 'app_data',
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'USER': 'super_user',
    'PASSWORD': ''
}

}

И тогда вы можете использовать --database для целей обслуживания

./manage.py syncdb --database=default_root

Вот несколько документов базы данных

http://docs.djangoproject.com/en/dev/topics/db/multi-db/

0 голосов
/ 01 апреля 2011

Вы могли бы сделать это, имея отдельный файл db_settings.py, который импортирует основной файл настроек, но переопределяет значение пользователя базы данных.

Затем, когда вы выполняете syncdb, вы можете явно указать Django использовать этофайл настроек:

./manage.py syncdb --settings=db_settings
...