Это решается путем определения двух профилей DATABASE в вашем settings.py .
по умолчанию - используется django во время выполнения с ограниченными разрешениями для этой дополнительной безопасности.
sync - используется syncdb как пользователь root с дополнительными привилегиями создания.
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'database_name',
'USER':'runtime',
'PASSWORD':'runtime_password',
'HOST':'',
'PORT':'',
},
'sync': {
'ENGINE':'django.db.backends.mysql',
'NAME':'database_name',
'USER':'root',
'PASSWORD':'',
'HOST':'',
'PORT':'',
},
}
Вы будететакже необходимо предоставить ограниченные разрешения для доступа по умолчанию во время выполнения в MySQL:
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'runtime'@'localhost' IDENTIFIED BY 'runtime_password';
Наконец, когда вы запускаете syncdb , укажите свой sync доступprofile:
python manage.py syncdb --database=sync
Это должно обеспечить вам необходимую безопасность во время выполнения и доступ к командной строке.