浅谈PostgreSQL用户权限

  经常在PG群里看到有人在问“为什么我对表赋予了权限;但是还是不能访问表”

解析

  若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍上面对你就不是困扰你的问题

  解决这个问题很简单;在解决之前;我们要先了解PostgreSQL的逻辑结构、以及与用户之间的关系盗用德哥的图;来诠释下逻辑结构;PostgreSQL逻辑结构有4层:实例->数据库->schema->数据库对象

浅谈PostgreSQL用户权限

 

  可以看出用户不在PostgreSQL里面;是独立之外的object;这个跟Oracle逻辑结构不一致。它不属于某个数据库、或者某个schema。

  若用户不是数据库属主的用户;要访问table1;该怎么办?有三步

首先你把数据库select的权限赋予用户

再则你需要把table1所在的schema的select权限赋予用户

最后你需要把table的select的权限赋予

讨论

  现实验环境

用户:lottu1、lottu2。

数据库:db1

schema:lottu1

表:tbl_lottu_01

# 创建用户lottu1 postgres=# create user lottu1; CREATE ROLE # 创建用户lottu2 postgres=# create user lottu2; CREATE ROLE # 创建数据库db1;属于lottu1 postgres=# create database db1 owner lottu1; CREATE DATABASE # 创建schema、table、并插入记录 postgres=# \c db1 lottu1; You are now connected to database "db1" as user "lottu1". db1=> create schema lottu1; CREATE SCHEMA db1=> create table tbl_lottu_01(id int, info text, reg_time timestamp); CREATE TABLE db1=> insert into tbl_lottu_01 select 1,'lottu',now(); INSERT 0 1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjszf.html