我是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任务的所有内容,所以我可以在技术上检索数据库中的所有表并遍历它们,但感觉像是一个糟糕的解决scheme。 这似乎是我失去了一些东西。 任何想法/意见/链接将不胜感激。
编辑1:作为一个快速的笔记,所有这些命令都以超级用户的身份运行,在数据库中使用pg_hba.conf中指定的IDENT SAMEUSER身份validation,如果有任何区别的话。
你能试一下吗
psql dbname username < filename.sql
所以你会用
psql demo demo < myfile.sql
我不知道你的SQL文件将要去哪里,因为你没有在脚本中指定数据库。
一些例子可能是:
几乎所有的东西:授予数据库演示的所有特权演示;
授予一些简单的select:授予select表foo演示;
多select:授予select,插入,更新,删除表foo演示;
更多信息在这里: http : //www.postgresql.org/docs/8.3/static/sql-grant.html
如果您只想授予用户“演示”读取/写入/修改数据库“演示”的能力,那么您已经完成了,因为数据库的所有者默认具有所有必要的权限。
如果您对多个用户需要更多的特定权限,则可以为一个或多个对象创build一个新用户并授予GRANT权限。
对于非本地访问数据库,我强烈build议调整你的pg_hba.conf