【发布时间】:2015-06-07 20:46:48
【问题描述】:
我是 postgres 的新手,我正在尝试找出在运行 Web 应用程序时如何最好地保护我的数据库。
在 MySQL 中,我倾向于使用管理用户来执行诸如创建数据库、创建表、修改模式、删除表等操作:当某些应用程序持续使用数据库时,所有不应该发生的活动。然后我有第二个用户(每个应用程序一个),他(仅)拥有应用程序所需的权限,如插入、更新等。这样可以避免应用程序错误/黑客造成灾难性后果。
现在我正试图弄清楚如何在 postgres 中做类似的事情。与 MySQL 不同,postgres 数据库似乎有一个“所有者”。如果我使用上面的方案,管理用户是否应该“拥有”所有应用程序的所有数据库?或者这里有哪些最佳做法?
补充:我只是发现授予“所有表”的权限似乎意味着“当前定义的所有表”并且不包括未来的表。与 MySQL 不同,“on foo.*”表示所有当前和未来的表。那是对的吗?有没有办法在授权语句中也包含未来的表,还是我每次都重新执行?
【问题讨论】:
-
一个 MySQL 数据库相当于一个 Postgres 架构
标签: mysql database postgresql