Я обычно:
grant all privileges on my_db.* to my_user@localhost identified by 'my_user_pass'
grant all privileges on test_my_db.* to my_user@localhost identified by 'my_user_pass'
Полагаю, если бы в django была ошибка, вы могли бы открыть свою базу данных до ужасных вещей, но у вас были бы другие проблемы, если бы в django была такая большая дыра в безопасности.
Для работы django требуется минимальный выбор, вставка, обновление и удаление. Если вы вообще используете test или syncdb, вам также понадобится создавать таблицы и индексы (и, возможно, разрешение на загрузку файлов для sql-файлов).
Итак, для mysql db я бы предположил, что оптимальным набором разрешений может быть выбор, вставка, обновление, удаление, создание, индексирование и файл. Если вы хотите получить по-настоящему все необходимое, вы можете выборочно предоставить эти разрешения соответствующим образом на уровне таблицы (а не на уровне БД).
Лично мне легче набрать grant all ...
.