在 pgAdmin 4 中创建只读用户有点棘手。 这是我如何做到的指南。
首先简单介绍一下流程。 整个过程基于为您的数据库编辑模式(非常简单和安全),因此这对您拥有的所有数据库使用该方法造成了限制,除非您为每个数据库编辑模式(同样,这很容易)。
首先,我们必须打开一个主对话框,选择您需要只读用户的目标数据库->Schemas->右键单击“public”模式->Properties.
在打开的窗口中转到“默认权限”,然后单击右上角的“+”。
pg_read_all_data
”,Select
”。在其余选项卡(序列、函数、类型)上,您可以执行相同的操作(Select 或 Usage)。 点击“保存”。
在左侧边栏中向下滚动并找到“登录/组角色”。单击右键 -> Create -> Login/Group Role。 或者,如果您有一个现有的用户角色,您想要将其设置为只读,请单击它的右键并选择“Properties”。
在打开的窗口中输入用户名,在“Definition”选项卡上输入密码,在“Previliges”选项卡上选择“
Can login
”和“Inherit rights from the parent roles?
”
在“Membership”选项卡中,点击“Member of”表中的“+”,然后在“
User/Role”列中键入“
pg_read_all_data
”。
在“Parameters”选项卡中点击“+”。 在“
Name”列的下拉列表中选择“
role
”,
在“Value”列中键入“
pg_read_all_data
”。
在“Database”列中选择所需的数据库(您已在前面的步骤中编辑了架构)。
注意,您可以为不同的数据库添加更多具有相同设置的行(当然,如果这些数据库具有如上所示的编辑模式)。
点击“保存”。
现在你可以在这个用户下登录到你的 PhpPgAdmin(或 psql 或任何你需要的地方)并且只做选择。真正的只读用户角色。
我希望它能帮助别人。
我没有足够的声誉来评论你非常有用的帖子,但我想补充一点,默认情况下公共模式提供对 PUBLIC 角色(所有用户属于的隐式角色)的完全访问权限。 因此,您首先需要撤销此访问权限。
这可以在模式属性对话框的
Security
选项卡中的 pgAdmin 中完成,或者使用 SQL 命令
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
另见:
谢谢! 对我很有用而且准时:) 我的问题是如何从 PGadmin 注销并登录。 我有在 docker 上运行的 Pgadmin,每次我去 url 时它都与默认管理员用户连接。 我如何强制其他成员登录? 这是我的 docker-compose.yml 文件:
version: '3.5'
services:
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
PGADMIN_CONFIG_SERVER_MODE: 'False'
volumes:
- pgadmin:/var/lib/pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
restart: unless-stopped
volumes:
pgadmin: