PostgreSQL 用户权限

PostgreSQL 用户权限

我在 Debian 机器上有一个 PostgreSQL 数据库,并且我(从 shell 中):

su postgres
createdb dnls
createuser dnls -P
Enter password for new user: somepass [enter]
Enter it again: somepass [enter]
Shall the new user be allowed to create databases? (y/n) n [enter]
Shall the new user be allowed to create more new users? (y/n) n [enter]

之后,我在 Django 应用程序 settings.py 中添加了用户/密码/数据库名称,然后我执行了 a manage.py syncdb,django 为我的模型创建了表。

dnls 用户怎么会拥有对 dnls 数据库的读/写权限?
我没有在任何地方授予他任何权限。
难道他拥有访问权限只是因为数据库与他同名吗?这看起来不安全。

答案1

您的新用户不会自动获得对数据库的读/写权限,因为他的名称与数据库相同。如果您查阅 createdb 和 createuser 手册页,就会发现该信息。

实际情况是,即使该用户不是所有者,他也有权读取/写入所有未受特别限制的数据库。这由数据库创建期间使用的模板控制。如果您不喜欢这种行为,您可以创建自己的模板,并在将来创建数据库时使用该模板。

相关内容