文档章节

PostgreSQL中用户对表的访问权限控制

YuanyuanL
 YuanyuanL
发布于 2016/08/31 10:23
字数 483
阅读 221
收藏 0

参考资料:http://vhttps://www.postgresql.org/docs/9.5/static/sql-revoke.html

 

E:\Program Files\HighGo DataBase\bin>psql -E -U highgo -d highgo
highgo=# create database lyy;
highgo=# create user yy password 'yy'; 

highgo=# \c lyy
You are now connected to database "lyy" as user "highgo".
lyy=# create table test1(id int);
CREATE TABLE
lyy=# create table test2(id int);
CREATE TABLE
--对当前库中所有表去掉public的所有访问权限,为了确保除了所有者之外的洽谈用户不能操作这些表。
lyy=# revoke all on test1 from public;
REVOKE
lyy=# revoke all on test2 from public;
REVOKE
--去掉对pg_class的访问权限,为了确保yy用户不能看到所有表名的列表。
lyy=# revoke all on pg_class from public;
REVOKE
lyy=# revoke all on pg_class from yy;
REVOKE
--添加yy用户对test1表的所属关系,确保yy用户对test1表有权限操作
lyy=# ALTER TABLE test1 OWNER TO yy; 
lyy=# \q

--此时用户yy连接lyyku会报错说没有connect权限,那么就授予用户yy对数据库lyy的访问权限
E:\Program Files\HighGo DataBase\bin>psql -E -U yy -d lyy
Password for user yy:
psql: FATAL:  permission denied for database "lyy"
DETAIL:  User does not have CONNECT privilege.

E:\Program Files\HighGo DataBase\bin>psql -E -U highgo
Password for user highgo:
psql (2.0.2)
Type "help" for help.

highgo=# grant connect on database lyy to yy; 
GRANT
highgo=# \q

--此时用户yy连接lyy库后,可以对自己拥有的test表操作,但是对于其他表不能操作,也不能查看所有表的表名列表。
E:\Program Files\HighGo DataBase\bin>psql -E -U yy -d lyy
Password for user yy:
psql (2.0.2)
Type "help" for help.

lyy=> select * from test1;
 id
----
(0 rows)


lyy=> select * from test2;
ERROR:  permission denied for relation test2

lyy=> \d --查看所有表名的列表
********* QUERY **********
SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','S','f','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************

ERROR:  permission denied for relation pg_class
lyy=>

© 著作权归作者所有

YuanyuanL

YuanyuanL

粉丝 154
博文 330
码字总数 194577
作品 0
济南
高级程序员
私信 提问
如何在Debian 9上安装PostgreSQL

PostgreSQL,通常简称为Postgres,是一种开源的通用对象 - 关系数据库管理系统。 PostgreSQL具有许多高级功能,如在线备份,即时恢复,嵌套事务,SQL和JSON查询,多版本并发控制(MVCC),异...

dragon_tech
2018/11/24
105
0
PostgreSQL 数据库的整体安全性

数据库安全性是如今基于 Web 的应用程序面对的最大挑战。如果不加以控制,您将面临公司敏感信息被曝光的风险,更糟糕的是,珍贵的客户信息也将面临被泄露的风险。在本文中,了解可以用来保护...

小编辑
2009/12/25
2.6K
3
PostgreSQL 远程链接 Sever端配置

PostgreSQL Sever需要配置才可被用户远程链接 配置文件: pghba.conf 控制访问安全,管理客户端访问PostgreSQL server的访问权限。 postgresql.conf 数据库参数文件,配置数据库相关参数。 ...

唐修
2018/12/10
0
0
centos7部署posgresql和kong总结

  之前在macos系统测试安装psql和kong,但是实际环境中,大部分是部署在linux服务器上。下面记录了在centos7上部署postgresql和kong的总结以及遇到的一些问题的解决。 查看centos版本: $ ...

zhoujie0111
2018/06/08
0
0
PostgreSQL下如何修改用户权限的介绍以及hook机制对超级用户的权限修改

要想修改PG的用户权限,那么首先要对PG权限控制做一下了解: PG的权限控制是针对到各个对象的。大家可以看一下,所有系统表(pg_catalog下)几乎都会有aclitem[]数组类型的**acl的字段,这就...

PGSmith
2014/09/12
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员web前端教程分享web前端入门基础知识

  好程序员web前端教程分享web前端入门基础知识,作为合格的Web前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一两个还不行,必须对这三门语言都要熟悉。下面我们一起来看一看吧! ...

好程序员官网
15分钟前
3
0
elasticsearch 中文分词插件IK-Analyze

elasticsearch 版本 7.3 安装中文分词插件 插件对应的版本需要和elasticsearch的版本一致 插件各个版本下载地址 https://github.com/medcl/elasticsearch-analysis-ik/releases 使用elastic...

kdy1994
19分钟前
3
0
只用一套解决方案,就可解决80%的交通物流行业信息难题

行业背景 新中国成立70多年来,中国交通运输总体上已经形成了多节点、全覆盖的综合运输网络,“五纵五横”综合运输大通道基本贯通,一大批综合客运、货运枢纽站场(物流园区)投入运营,取得...

朕想上头条
21分钟前
4
0
spring-boot结合AOP实现数据源动态配置

Spring-Boot+AOP方式实现多数据源切换 设计总体思路:Spring-Boot+AOP方式实现多数据源切换,继承AbstractRoutingDataSource实现数据源动态的获取,在service层使用注解指定数据源。 一、多数...

蜗牛伊
22分钟前
3
0
干货 | 京东技术中台的Flutter实践之路

在 2019 年,Flutter 推出了多个正式版本,支持的终端越来越多,使用的项目也越来越多。Flutter 正在经历从小范围尝鲜到大面积应用的过程,越来越多的研发团队加入到 Flutter 的学习热潮中,...

京东云技术新知
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部