创建只读用户并且开放特定的表。
安装数据库的时候会默认的创建一个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 授予访问的权限(对于新建的schema来说要指定 usage 权限)
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;
总结一下,还是要多多的动手,不动手不去试永远都不会。做人应该也是一样的,没有经历就不会知道当事人所经历了什么。
有什么问题,欢迎大家指正。欢迎大家交流。