django - 南需要 DROP 权限,这似乎不安全,有没有办法避免这种情况

标签 django django-south

我在一个项目中引入了South。我遇到了麻烦,因为 South 需要 DROP 权限。我得到的错误:

(1142,“对于表“ROLLBACK_TEST”,用户“??????”的 DROP 命令被拒绝”)

此后,迁移似乎很无聊。我不得不删除数据库并重新创建它。

运行 South 命令时,使用“默认”Django 连接。因此,关联用户(也用于前端网站)需要具有 DROP 权限。对我来说,这似乎有点危险。有没有办法绕过这种潜在的不安全方法?

最佳答案

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

2) 在前面添加 from settings import * 以导入现有的 settings.py 键。

3) 编辑 USERPASSWORD 值以反射(reflect)新创建的具有 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) 最后,使用 --settings=south_settings 参数执行 python manage.py [command]

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

关于django - 南需要 DROP 权限,这似乎不安全,有没有办法避免这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402306/

相关文章:

python - Django 模板中的总计/小计

django - 南。迁移整个数据库

python - 使用 south 重命名 django 模型类名和相应的外键,而不会丢失数据

django - 如何使用 django 确保数据库更改可以轻松地通过 DVCS 移动

python - 我怎样才能从这个模型中获取对象?

Django 唯一的一起约束与关系

django - 如何正确加载 Django 南迁移中的装置?

python - 南 - 如何强制某些迁移?

python - 当我使用 HttpResponseRedirect 时,我得到 TypeError : quote_from_bytes() expected bytes in Django

python - PyCharm/Django 安装程序 : cannot import charset from email?