南方需要DROP特权,这似乎是不安全的,有没有办法避免这种情况

时间:2013-05-06 15:43:58

标签: django django-south

我在一个项目中介绍了南方。我遇到了麻烦,因为南方需要DROP特权。我得到的错误:

(1142,“DROP命令拒绝用户'?????'表'ROLLBACK_TEST'”)

之后,移民似乎变得僵硬了。我不得不放弃我的数据库并重新创建它。

运行South命令时,使用'default'Django连接。因此,关联用户(也用于前端网站)需要具有DROP权限。对我来说,这似乎有点危险。有没有办法解决这种可能不安全的方法?

1 个答案:

答案 0 :(得分:2)

1)将settings.py复制到新文件south_settings.py,然后删除除DATABASES键以外的所有内容。

2)前置from settings import *以导入现有的settings.py个密钥。

3)编辑USERPASSWORD值以反映具有DROP权限的新创建的SQL用户。

# south_settings.py
from settings import *

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_db',  # Or path to database file if using sqlite3.
        'USER': 'username_with_drop_privileges',                      # Not used with sqlite3.
        'PASSWORD': 'password_with_drop_privileges',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

您只需覆盖此新south_settings.py中的DATABASES键值。


4)最后,使用python manage.py [command]参数执行--settings=south_settings

python manage.py migrate [app] --settings=south_settings