postgresql 賦權(quán)語句 grant的正確使用說明
grant select on all tables in schema public to username;
此句是有效的復(fù)制語句
PG中有schema的概念,
以下的語句就是不行
網(wǎng)上得來終覺淺,錯(cuò)誤比較多,還是要自己試試才行。
補(bǔ)充:postgresql關(guān)于訪問視圖需要的權(quán)限
某個(gè)用戶訪問一個(gè)視圖,這個(gè)用戶需要具備這個(gè)視圖的schema的usage和這個(gè)視圖本身的select權(quán)限,如果視圖的基表來自其他schema,可能還需要其他schema的usage權(quán)限(根據(jù)postgresql改造的redshift發(fā)現(xiàn)了此問題),但是這個(gè)用戶不需要視圖對應(yīng)基表的select權(quán)限
如果基表被修改了或重建了,需要把基表重新賦權(quán)給視圖的owner,否則視圖無法生效,但是不需要把基表授權(quán)給需要訪問視圖的用戶,比如視圖view1的owner是viewowner,一個(gè)用戶user1有訪問view1的權(quán)限,一旦view1的基本table1被重建了,需要把基表table1的權(quán)限重新賦給viewowner,但是不需要把table1的權(quán)限重新賦給uers1
案例1:
用戶u2訪問s2.view1,用戶u2只需要s2的usage權(quán)限和s2.view1的select權(quán)限,而不需要s2.view1基表s1.table1的select權(quán)限和對應(yīng)schema s1的usage權(quán)限
t1=# \c You are now connected to database “t1” as user “postgres” t1=# \dns List of schemas Name | Owner --------±--------- public | postgres s1 | postgres s2 | postgres (3 rows) t1=# create user u1 password ‘123456'; CREATE ROLE t1=# create user u2 password ‘123456'; CREATE ROLE t1=# grant all privileges on schema s1 to u1; GRANT t1=# grant all privileges on schema s2 to u1; GRANT t1=# \c - u1 You are now connected to database “t1” as user “u1”. t1=> create table s1.table1(hid int); CREATE TABLE t1=> create view s2.view1 as select * from s1.table1; CREATE VIEW t1=> \c - u2 You are now connected to database “t1” as user “u2”. t1=> select * from s2.view1; ERROR: permission denied for schema s2 LINE 1: select * from s2.view1; t1=> \c - postgres You are now connected to database “t1” as user “postgres”. t1=# grant usage on schema s2 to u2; GRANT t1=# \c - u2 You are now connected to database “t1” as user “u2”. t1=> select * from s2.view1; ERROR: permission denied for view view1 t1=> \c - postgres You are now connected to database “t1” as user “postgres”. t1=# grant select on s2.view1 to u2; t1=# \c - u2 You are now connected to database “t1” as user “u2”. t1=> select * from s2.view1; hid (0 rows)
案例2:
redshift數(shù)據(jù)庫,用戶lukes訪問cl_crm.v_account,用戶lukes不僅需要cl_crm的usage權(quán)限和cl_crm.v_account的select權(quán)限,還需要cl_crm.v_account基表對應(yīng)schema的usage權(quán)限,但是不需要基表raw_wam.ibdwsurvey、raw_c3.ibdwsurveyinfo的select權(quán)限
創(chuàng)建用戶lukes,并授權(quán)用戶擁有視圖cl_crm.v_account對應(yīng)schema的usage權(quán)限
create user lukes password ‘X123_x123' grant usage on schema cl_crm to lukes
lukes用戶查詢cl_crm.v_account視圖報(bào)錯(cuò)
select * from cl_crm.v_account limit 1 Amazon Invalid operation: permission denied for schema raw_wam; 1 statement failed.
對用戶lukes授權(quán)usage在視圖基表對應(yīng)的schema上
grant usage on schema raw_wam to lukes grant usage on schema raw_c3 to lukes
lukes用戶查詢cl_crm.v_account視圖繼續(xù)報(bào)錯(cuò)
Amazon Invalid operation: permission denied for relation v_account;
對用戶lukes授權(quán)訪問視圖的select權(quán)限
grant select on table cl_crm.v_account to lukes
lukes用戶查詢cl_crm.v_account正常了
cl_crm.v_account視圖語句是
CREATE or replace view cl_crm.v_account as with userids as ( select distinct su.ibsu_userid from raw_wam.ibdwsurvey su left join raw_c3.ibdwsurveyinfo si …)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Postgresql使用update語句的方法示例
- PostgreSQL實(shí)時(shí)查看數(shù)據(jù)庫實(shí)例正在執(zhí)行的SQL語句實(shí)例詳解
- Postgresql 查看SQL語句執(zhí)行效率的操作
- postgresql SQL語句變量的使用說明
- Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù)
- PostgreSQL標(biāo)準(zhǔn)建表語句分享
- postgresql 導(dǎo)出建表語句的命令操作
- postgresql 實(shí)現(xiàn)sql多行語句合并一行
- Postgresql ALTER語句常用操作小結(jié)
- Postgresql開啟SQL執(zhí)行語句收集過程
相關(guān)文章
Postgresql創(chuàng)建新增、刪除與修改觸發(fā)器的方法
這篇文章主要介紹了Postgresql創(chuàng)建新增、刪除與修改觸發(fā)器的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用
這PostgreSQL中提供了窗口函數(shù),一個(gè)窗口函數(shù)在一系列與當(dāng)前行有某種關(guān)聯(lián)的表行上進(jìn)行一種計(jì)算。下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用的相關(guān)資料,需要的朋友可以參考下2019-03-03Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法
最近有需要對數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢起來有一些慢,需要對大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求,這篇文章主要介紹了Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法,需要的朋友可以參考下2024-08-08Postgresql - 查看鎖表信息的實(shí)現(xiàn)
這篇文章主要介紹了Postgresql 查看鎖表信息的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12PostgreSQL 使用raise函數(shù)打印字符串
這篇文章主要介紹了PostgreSQL 使用raise函數(shù)打印字符串,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01postgresql 中的加密擴(kuò)展插件pgcrypto用法說明
這篇文章主要介紹了postgresql 中的加密擴(kuò)展插件pgcrypto用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值
這篇文章主要介紹了postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01