暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 错误:架构 PUBLIC 的权限被拒绝

原创 小小亮 2022-11-23
910

在 PostgreSQL 15 中,发生了一个与碰巧使用权限的每个用户相关的根本性变化:公共模式的默认权限已被修改。这是相关的,因为它可能会在应用程序部署期间伤害您。您需要了解它对您的影响。

目录

创建用户

许多人只作为超级用户工作。不建议这样做,可能会导致严重的安全问题。建议创建单独的用户来运行您的应用程序。在 PostgreSQL 中,您可以使用或命令创建新用户。这两个选项之间的区别在于直接设置权限而将此属性设置为。在此示例中,您将创建一个“演示”用户,如下清单所示:CREATE USER``CREATE ROLE``CREATE USER``LOGIN``CREATE ROLE``NOLOGIN

security=# CREATE USER demo LOGIN;
CREATE ROLE

完成后,您可以重新连接到数据库。\c如果您碰巧使用 psql,该命令是执行此操作的好方法。如果您正在运行其他工具,请使用新用户重新连接:

security=# \c security demo
You are now connected to database "security" as user "demo".
security=> SELECT current_user;
current_user
--------------
demo
(1 row)

“current_user” 将返回当前使用的用户。

在 PostgreSQL 15 中使用 PUBLIC 模式

在 PostgreSQL 14 和之前的版本中,创建表是可能的。新表将简单地以公共模式结束,一切都会很好。这种方法的问题在于,公共模式会很快变成一个包含各种已用和未用表的垃圾桶——这既不可取也不推荐。因此 PostgreSQL 取得了重大飞跃并改变了这种行为。

查看以下清单

ecurity=> CREATE TABLE foo (id int);
ERROR: permission denied for schema public
LINE 1: CREATE TABLE foo (id int);

PostgreSQL 会出错并告诉您您没有权限在公共模式中创建某些内容,而无需事先明确指定允许谁这样做。现在有必要明确地向用户授予权限。它是这样工作的:

security=> \c security postgres
You are now connected to database "security" as user "postgres".
security=# GRANT ALL ON SCHEMA public TO demo;
GRANT

让我们以超级用户身份连接到 PostgreSQL 并设置USAGE + CREATE = ALL对公共模式的权限。完成后,您可以继续在此模式中创建对象:

security=# \c security demo
You're now connected to database "security" as user "demo".
security=> CREATE TABLE foo (id int);
CREATE TABLE

该表将属于创建该表的“demo”用户:

security=> \d
List of relations
Schema | Name | Type  | Owner
-------+------+-------+-------
public | foo  | table | demo
(1 row)

最后

如果您想了解有关 PostgreSQL 的更多信息,并且您碰巧对一般安全性感兴趣,那么在 PostgreSQL 中使用 SSL 加密客户端/服务器连接是没有办法的。我创建了一篇关于这个重要主题的博文并邀请您阅读(https://www.cybertec-postgresql.com/en/setting-up-ssl-authentication-for-postgresql/)。

原文标题:POSTGRESQL ERROR: PERMISSION DENIED FOR SCHEMA PUBLIC
原文作者:Hans-Jürgen Schönig
原文链接:https://www.cybertec-postgresql.com/en/error-permission-denied-schema-public/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论