PostgreSQL 创建只读用户,并开放特定的表。(实例)

创建只读用户并且开放特定的表。

安装数据库的时候会默认的创建一个postgres 的 superuser 创建别的用户必须是按照这个用户开始创建的。

所以说第一个用户的创建应该是通过 root 登录linux 的postgres 用户(不需要输入密码) 来创建超级管理员用户。

 

1 创建超级用户的角色

---1 创建超级用户的角色
Create role super LOGIN PASSWORD '123456' SUPERUSER VALID UNTIL 'infinity'

--- 可以设定过期时间
Create role super LOGIN PASSWORD '123456' SUPERUSER VALID UNTIL '2020-1-1 00:00'

权限中还包括了,过期的参数设置, valid until 'infinity'

2 创建角色组

 一般情况是不给组角色登录权限的。应为组角色的概念是将一组权限汇聚成一个集合。以方便批量授予别的普通用户。

Create role grouprole INHERIT
--
GRANT grouprole TO leo;

Inherit  的用法,表示组角色grouprole 的 任何一个成员角色自动继承 除了 superuser 之外的所有权限。

Noinherit 的功能是禁止将权限授予成员角色。

3 创建自读role group 角色组(获得的定表的权限 或者 schema 的权限)

 a 创建角色组

CREATE ROLE readaccess;

b 授予访问的权限

GRANT USAGE ON SCHEMA public TO readaccess;

c 这里可以设定访问特定的表还是访问访问所有的表的权限

 可以访问public 下的所有表

GRANT SELECT ON ALL TABLES IN SCHEMA public TO readaccess;

访问指定的表的权限

GRANT SELECT ON tbl_user TO readaccess;

d 如果是访问所有表 设定新建的表的访问权限。

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readaccess;

e 创建可登录的角色(继承一下上面打下来的江山 哈哈哈哈 大功告成)

CREATE USER son WITH PASSWORD 'youqianla';

GRANT readaccess TO son;

总结一下,还是要多多的动手,不动手不去试永远都不会。做人应该也是一样的,没有经历就不会知道当事人所经历了什么。

有什么问题,欢迎大家指正。欢迎大家交流。

发布了20 篇原创文章 · 获赞 2 · 访问量 9770

猜你喜欢

转载自blog.csdn.net/wangrui1605/article/details/99895238
今日推荐