在 PostgreSQL 中授予权限的正确方法

在 PostgreSQL 中授予权限的正确方法

我是 PostgreSQL 新手,在查找有关如何授予用户对其所拥有的数据库的权限的信息时遇到了一些麻烦。我读过一些资料,其中说所有者拥有所有权限,但这似乎对我不起作用。我仍然必须授予权限才能运行 select 语句。

我也读过不少文章说 PostgreSQL 根本不支持同时授予数据库中的多个表权限,所以我希望它们只是过时了。

以下是我目前所做的工作:

# Create the user
createuser -SDRPE demo

# Create the database
createdb demo -O demo

# Import schema
psql -f myfile.sql demo

# Grant Permissions
???

有人能告诉我最好的解决方法吗?目前,我正在 Rake 任务中编写所有这些内容,因此从技术上讲,我可以检索数据库中的所有表并遍历它们,但感觉这是一个非常笨拙的解决方案。我似乎遗漏了一些东西。任何想法/评论/链接都将不胜感激。

编辑1:需要简要说明的是,所有这些命令均以 root 身份运行,root 是数据库中的超级用户,并且具有IDENT SAMEUSER指定的身份验证pg_hba.conf,以防万一产生任何差异。

答案1

你能试一下吗

psql dbname username < filename.sql

所以你会用

psql demo demo < myfile.sql

我不确定您的 sql 文件去哪儿了,因为您没有在脚本中指定 db。

答案2

例如:

几乎所有内容:将数据库 demo 的所有权限授予 demo;

授予一些简单的选择:授予对表 foo 的选择权给 demo;

超过选择:授予 demo 对表 foo 的选择、插入、更新、删除权限;

更多信息请点击这里: http://www.postgresql.org/docs/8.3/static/sql-grant.html

答案3

如果您想要做的只是授予用户“demo”读/写/修改数据库“demo”的权限,那么您已经完成,因为数据库的所有者默认拥有所有必要的权限。

如果您需要为多个用户提供更具体的权限,您可以创建用户新用户和授予对一个或多个对象的权限。

对于非本地访问数据库,我强烈建议您调整配置文件

相关内容