我在一个项目中引入了South。我遇到了麻烦,因为 South 需要 DROP 权限。我得到的错误:
(1142,“对于表“ROLLBACK_TEST”,用户“??????”的 DROP 命令被拒绝”)
此后,迁移似乎很无聊。我不得不删除数据库并重新创建它。
运行 South 命令时,使用“默认”Django 连接。因此,关联用户(也用于前端网站)需要具有 DROP 权限。对我来说,这似乎有点危险。有没有办法绕过这种潜在的不安全方法?
最佳答案
1) 将 settings.py
复制到新文件 south_settings.py
,并删除除 DATABASES 键之外的所有内容。
2) 在前面添加 from settings import *
以导入现有的 settings.py
键。
3) 编辑 USER
和 PASSWORD
值以反射(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/