如何向数据库中的所有表授予某些权限?
我需要类似于 postgresql 8.4 中 mysql 的 GRANT SELECT ON db.* TO user
的东西。我在网上找到的解决方案使用 for 循环一次选择表并授予它们权限。但这意味着每次将新表添加到数据库时我都必须重新运行该命令。
有没有更直接的解决方案?
I need something similar to mysql's GRANT SELECT ON db.* TO user
in postgresql 8.4. The solutions I find online use a for loop to select tables on at a time and grant privileges on them. But that would mean I would have to rerun the command every time a new table is added to the database.
Is there a more straightforward solution to this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设您没有定义任何特定的模式,您的所有表都将位于“公共”模式中,因此您可以说:
这仅适用于 9.0 或更高版本,因此您在 8.4 中运气不佳。
另请参阅:http://www.postgresql.org/docs/8.4/静态/ddl-schemas.html
Assuming you don't have any specific schemas defined, all your tables will be in the 'public' schema, so you can say:
This only works on 9.0 or above though, so you're out of luck in 8.4.
See also: http://www.postgresql.org/docs/8.4/static/ddl-schemas.html
请注意,通常将某个用户的权限授予另一个用户同样有意义或更有意义,并且更容易跟踪。
Note that often granting a certain user's rights to another user makes as much or more sense and is easier to keep track of.
默认权限随版本 9.0 一起提供,在旧版本中不可用。
您可以创建一个循环遍历所有表并设置权限的存储过程。
Default privileges came with version 9.0, it's not available in older versions.
You can create a stored procedure that loops through all tables and sets the privileges.