PG使用預設許可權訪問其它schema資料示例

2022-10-06 10:48:11 字數 3924 閱讀 2617

# 刪除public模式,各自使用私有模式管理資料(需用管理使用者操作)

postgres@s2ahumysqlpg01-> psql

psql (12.4)

type "help" for help.

postgres=# drop database testdb ;

postgres=# create database testdb ;

create database

\c testdb

testdb=# drop schema if exists public;

drop schema

#建立三個使用者(需用管理使用者操作)      

testdb=# create user asher encrypted password '123456';

# 建立三個使用者對應的schema並各自關聯(需用管理使用者操作)

testdb=# create schema asher authorization asher;

postgres@s2ahumysqlpg01-> psql -uasher testdb

password for user asher:

psql (12.4)

type "help" for help.

testdb=>

create table tbl_asher1(id int);

create table tbl_asher2(id int);

insert into tbl_asher1 values(100);

insert into tbl_asher2 values(200),(300);

testdb=> \d

list of relations

schema | name | type | owner

--------+------------+-------+-------

asher | tbl_asher1 | table | asher

asher | tbl_asher2 | table | asher

(2 rows)

psql (12.4)

type "help" for help.

testdb=> \d

did not find any relations.

create table

testdb=> \d

list of relations

schema | name | type | owner

--------+----------+-------+-------

(1 row)

psql (12.4)

type "help" for help.

create table

testdb=> \d

list of relations

schema | name | type | owner

--------+----------+-------+-------

(1 row)

使用asher使用者配置當前所有表的select許可權

使用asher使用者配置當前所有表的update許可權

# 使用asher使用者配置新增表的預設許可權

psql (12.4)

type "help" for help.

testdb=> select * from asher.tbl_asher1;

id

-----

100(1 row)

testdb=> select * from asher.tbl_asher2;

id

-----

200300

(2 rows)

# 更新測試

testdb=> update asher.tbl_asher1 set id=id+1;

update 1

testdb=> update asher.tbl_asher2 set id=id+1;

update 2

testdb=>

# 刪除測試

testdb=> delete from asher.tbl_asher1;

error: permission denied for table tbl_asher1

testdb=> delete from asher.tbl_asher2;

error: permission denied for table tbl_asher2

psql (12.4)

type "help" for help.

testdb=> \d

list of relations

schema | name | type | owner

--------+----------+-------+-------

(1 row)

testdb=> select * from asher.tbl_asher1;

id

-----

100(1 row)

testdb=> select * from asher.tbl_asher2;

id

-----

200300

(2 rows)

更新測試:

testdb=> update asher.tbl_asher1 set id=null;

error: permission denied for table tbl_asher1

testdb=> update asher.tbl_asher2 set id=null;

error: permission denied for table tbl_asher2

刪除測試:

testdb=> delete from asher.tbl_asher1;

error: permission denied for table tbl_asher1

testdb=> delete from asher.tbl_asher2;

error: permission denied for table tbl_asher2

testdb=>

postgres@s2ahumysqlpg01-> psql -uasher testdb

password for user asher:

psql (12.4)

type "help" for help.

testdb=> create table tbl_asher3(id int);

create table

testdb=> insert into tbl_asher3 values(500),(900);

insert 0 2

test=> select * from asher.tbl_asher3;

id

-----

500900

(2 rows)

test=> update asher.tbl_asher3 set id=id+1;

update 2

test=> select * from asher.tbl_asher3;

id

-----

501901

(2 rows)

test=> update asher.tbl_asher3 set id=id+1;

error: permission denied for table tbl_asher3

連線或切換到相應db中去訪問資料

來自為知筆記(wiz)

C 預設訪問許可權

c 的預設訪問許可權老是搞混,特此記下。宣告類 方法 字段 屬性時不加訪問許可權修飾符時的訪問許可權是什麼呢?1.宣告命名空間 類,前面不加限制訪問修飾符時,預設訪問許可權為internal 訪問僅限於當前程式集。大龍注 從通俗的角度來說,乙個專案也就是乙個程式集。2.宣告類成員 域 屬性 方法 預...

C 預設訪問許可權

c 的預設訪問許可權老是搞混,特此記下。宣告類 方法 字段 屬性時不加訪問許可權修飾符時的訪問許可權是什麼呢?1.宣告命名空間 類,前面不加限制訪問修飾符時,預設訪問許可權為internal 訪問僅限於當前程式集。2.宣告類成員 域 屬性 方法 預設為private 以及結構型別,前面不加限制訪問修...

C 的預設訪問許可權

1.在namespace中的類 介面預設是internal型別的,也可以顯示的定義為public型別,不允許是其他訪問型別。2.在乙個類裡面,屬性和方法預設是private的,可以顯示的定義為public private protected internal或protected internal等訪...