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中有一个bug,你可能会打开你的数据库到可怕的事情,但如果django中有那么大的安全漏洞,你会有其他问题。 django最低限度需要select、insert、update和delete来操作。如果你使用test或syncdb,你还需要能够创建表和索引(可能还有加载sql fixture的文件权限)。 因此,对于mysql数据库,我猜最佳的权限设置可能是select、insert、update、delete、create、index和file.如果你想了解真正的细节,你可以在表级别(而不是数据库级别)有选择地授予这些权限。 就个人而言,我发现grant all ...更容易输入。
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("myapp_user", "0001_initial"),
]
operations = [
# Allow web workers access to the user table
migrations.RunSQL(
sql="""
GRANT SELECT ON TABLE myapp_user TO "web-worker";
""",
reverse_sql="""
REVOKE SELECT ON TABLE myapp_user FROM "web-worker";
""",
),
]
5条答案
按热度按时间xpszyzbs1#
Django文档:
https://docs.djangoproject.com/en/dev/topics/install/
如果你计划使用Django的manage.pysyncdb命令来自动为你的模型创建数据库表(在第一次安装Django并创建一个项目之后),你需要确保Django有权限在你正在使用的数据库中创建和修改表;如果你打算手动创建表,你可以简单地授予Django SELECT,INSERT,UPDATE和DELETE权限。在一些数据库上,Django在syncdb期间需要ALTER TABLE权限,但一旦syncdb创建了表,就不会对表发出ALTER TABLE语句。在创建具有这些权限的数据库用户之后,你将在项目的设置文件中指定详细信息,请参阅DATABASE以获取详细信息。
hm2xizp92#
我刚刚用MySQL测试了初始设置。对于
python manage.py migrate
,至少需要以下赠款来进行简单操作(如果使用db-preparation):还有顺便说一句-安全问题。你可以通过限制你的系统暴露来减少攻击的影响。在这种情况下-你可以限制'DROP' -这是相当大的优势。如果你留下一些棘手的漏洞,能够SQL注入-你可能会减少损害。我将在未来研究,如果它不会做任何伤害删除DELETE关键字-这将限制潜在的威胁以及。就因为我们都会时不时地留下bug:)
ee7vknir3#
我通常:
我想如果django中有一个bug,你可能会打开你的数据库到可怕的事情,但如果django中有那么大的安全漏洞,你会有其他问题。
django最低限度需要select、insert、update和delete来操作。如果你使用test或syncdb,你还需要能够创建表和索引(可能还有加载sql fixture的文件权限)。
因此,对于mysql数据库,我猜最佳的权限设置可能是select、insert、update、delete、create、index和file.如果你想了解真正的细节,你可以在表级别(而不是数据库级别)有选择地授予这些权限。
就个人而言,我发现
grant all ...
更容易输入。vfwfrxfs4#
您需要创建自定义迁移并使用原始SQL进行任何微调。
1.首先创建一个空迁移文件
1.重命名为有意义的名称
1.编辑迁移文件
czq61nw15#
在数据库级别上配置权限的目的是什么?如果您的服务器被入侵,那么攻击者将能够对您的数据库做任何事情(因为他有登录/通行证),并且权限不会有帮助。如果您的服务器是安全的,那么权限是无用的。
如果您的DB服务器可以从外部世界访问,则权限是有意义的,但这样做并不是一个好主意。