gpt4 book ai didi

postgresql - 为什么我不能在全新安装的 PostgreSQL 上设置权限

转载 作者:行者123 更新时间:2023-11-29 13:32:56 25 4
gpt4 key购买 nike

在 CentOS 6(64 位)上全新安装 PostgreSQL 9.3(根据 PostgreSQL wiki 上的 YUM 安装手册)不会向任何用户授予权限。

我登录到 postgres 用户并打开 psql,然后为我的默认用户创建一个角色:

CREATE ROLE <name> WITH PASSWORD '<password>';

然后尝试授予它对默认 postgres 数据库的权限:

GRANT ALL ON DATABASE postgres TO <user>;

这给出了预期的输出,但用户对 postgres 没有任何权限。\dp <user> 的输出奇怪地也是空的。其他测试表明我无法授予任何用户权限。但是,当我尝试删除已授予这些不存在的权限的角色时,它说

ERROR: role "<user>" cannot be dropped because some objects depend on it
DETAIL: privileges for database postgres

我很茫然。我还检查以确保 postgres Linux 用户对 PostgreSQL 数据目录具有适当的文件权限。

最佳答案

大概您对 GRANT ALL ON DATABASE postgres TO <user>; 期望过高

ALL在此上下文中意味着该命令等同于:

GRANT CREATE,CONNECT,TEMPORARY ON DATABASE postgres TO <user>;

并且您创建角色的方式无论如何都无法登录到任何数据库(您可以使用 \du 进行检查)。如果它是用以下方法创建的,它就可以:

CREATE ROLE name WITH LOGIN PASSWORD 'pass';

或使用 ALTER ROLE name WITH LOGIN稍后。

由此出发,赋予用户在数据库中创建对象的权限,其他形式GRANT应该使用。

关于postgresql - 为什么我不能在全新安装的 PostgreSQL 上设置权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com