postgresql 賦權(quán)語(yǔ)句 grant的正確使用說(shuō)明
grant select on all tables in schema public to username;
此句是有效的復(fù)制語(yǔ)句
PG中有schema的概念,
以下的語(yǔ)句就是不行
網(wǎng)上得來(lái)終覺(jué)淺,錯(cuò)誤比較多,還是要自己試試才行。
補(bǔ)充:postgresql關(guān)于訪(fǎng)問(wèn)視圖需要的權(quán)限
某個(gè)用戶(hù)訪(fǎng)問(wèn)一個(gè)視圖,這個(gè)用戶(hù)需要具備這個(gè)視圖的schema的usage和這個(gè)視圖本身的select權(quán)限,如果視圖的基表來(lái)自其他schema,可能還需要其他schema的usage權(quán)限(根據(jù)postgresql改造的redshift發(fā)現(xiàn)了此問(wèn)題),但是這個(gè)用戶(hù)不需要視圖對(duì)應(yīng)基表的select權(quán)限
如果基表被修改了或重建了,需要把基表重新賦權(quán)給視圖的owner,否則視圖無(wú)法生效,但是不需要把基表授權(quán)給需要訪(fǎng)問(wèn)視圖的用戶(hù),比如視圖view1的owner是viewowner,一個(gè)用戶(hù)user1有訪(fǎng)問(wèn)view1的權(quán)限,一旦view1的基本table1被重建了,需要把基表table1的權(quán)限重新賦給viewowner,但是不需要把table1的權(quán)限重新賦給uers1
案例1:
用戶(hù)u2訪(fǎng)問(wèn)s2.view1,用戶(hù)u2只需要s2的usage權(quán)限和s2.view1的select權(quán)限,而不需要s2.view1基表s1.table1的select權(quán)限和對(duì)應(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ù)庫(kù),用戶(hù)lukes訪(fǎng)問(wèn)cl_crm.v_account,用戶(hù)lukes不僅需要cl_crm的usage權(quán)限和cl_crm.v_account的select權(quán)限,還需要cl_crm.v_account基表對(duì)應(yīng)schema的usage權(quán)限,但是不需要基表raw_wam.ibdwsurvey、raw_c3.ibdwsurveyinfo的select權(quán)限
創(chuàng)建用戶(hù)lukes,并授權(quán)用戶(hù)擁有視圖cl_crm.v_account對(duì)應(yīng)schema的usage權(quán)限
create user lukes password ‘X123_x123' grant usage on schema cl_crm to lukes
lukes用戶(hù)查詢(xún)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.
對(duì)用戶(hù)lukes授權(quán)usage在視圖基表對(duì)應(yīng)的schema上
grant usage on schema raw_wam to lukes grant usage on schema raw_c3 to lukes
lukes用戶(hù)查詢(xún)cl_crm.v_account視圖繼續(xù)報(bào)錯(cuò)
Amazon Invalid operation: permission denied for relation v_account;
對(duì)用戶(hù)lukes授權(quán)訪(fǎng)問(wèn)視圖的select權(quán)限
grant select on table cl_crm.v_account to lukes
lukes用戶(hù)查詢(xún)cl_crm.v_account正常了
cl_crm.v_account視圖語(yǔ)句是
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語(yǔ)句的方法示例
- PostgreSQL實(shí)時(shí)查看數(shù)據(jù)庫(kù)實(shí)例正在執(zhí)行的SQL語(yǔ)句實(shí)例詳解
- Postgresql 查看SQL語(yǔ)句執(zhí)行效率的操作
- postgresql SQL語(yǔ)句變量的使用說(shuō)明
- Postgresql的pl/pgql使用操作--將多條執(zhí)行語(yǔ)句作為一個(gè)事務(wù)
- PostgreSQL標(biāo)準(zhǔn)建表語(yǔ)句分享
- postgresql 導(dǎo)出建表語(yǔ)句的命令操作
- postgresql 實(shí)現(xiàn)sql多行語(yǔ)句合并一行
- Postgresql ALTER語(yǔ)句常用操作小結(jié)
- Postgresql開(kāi)啟SQL執(zhí)行語(yǔ)句收集過(guò)程
相關(guān)文章
Postgresql創(chuàng)建新增、刪除與修改觸發(fā)器的方法
這篇文章主要介紹了Postgresql創(chuàng)建新增、刪除與修改觸發(fā)器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12PostgreSQL數(shù)據(jù)庫(kù)中窗口函數(shù)的語(yǔ)法與使用
這PostgreSQL中提供了窗口函數(shù),一個(gè)窗口函數(shù)在一系列與當(dāng)前行有某種關(guān)聯(lián)的表行上進(jìn)行一種計(jì)算。下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫(kù)中窗口函數(shù)的語(yǔ)法與使用的相關(guān)資料,需要的朋友可以參考下2019-03-03Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法
最近有需要對(duì)數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢(xún)起來(lái)有一些慢,需要對(duì)大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求,這篇文章主要介紹了Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法,需要的朋友可以參考下2024-08-08Postgresql - 查看鎖表信息的實(shí)現(xiàn)
這篇文章主要介紹了Postgresql 查看鎖表信息的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12PostgreSQL 使用raise函數(shù)打印字符串
這篇文章主要介紹了PostgreSQL 使用raise函數(shù)打印字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Postgresql開(kāi)啟SQL執(zhí)行語(yǔ)句收集過(guò)程
本文介紹如何修改PostgreSQL的配置文件來(lái)啟用SQL執(zhí)行語(yǔ)句的日志記錄,包括打開(kāi)配置文件、修改日志相關(guān)設(shè)置以及查看日志文件的方法,關(guān)鍵步驟包括刪除注釋符號(hào)、設(shè)定日志存儲(chǔ)路徑和文件名、選擇記錄的SQL語(yǔ)句類(lèi)型,此操作有助于數(shù)據(jù)庫(kù)管理和問(wèn)題調(diào)試2024-10-10postgresql 中的加密擴(kuò)展插件pgcrypto用法說(shuō)明
這篇文章主要介紹了postgresql 中的加密擴(kuò)展插件pgcrypto用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值
這篇文章主要介紹了postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01