PostgreSQL用戶訪問多個schema及其他常用命令


PostgreSQL可以通過給用戶授權並設置用戶的 Search_path:訪問的schema列表順序
--## 設置訪問路徑(默認當前用戶及public)
alter user tkk123 set search_path="$user", public;

--創建用戶,需要密碼
postgres=# create user tkk123 with password 'tkk123';

--## 授予指定架構下所有數據表及序列的權限
grant all privileges on all tables in schema public to tkk123;
grant all privileges on all sequences in schema public to tkk123;


--## 注意:上面的授權可能只對歷史的一些對象授權,后期增加的對象是沒有權限的,需要給個默認權限

--## 賦予默認數據表的權限
alter default privileges in schema public grant all privileges on tables to tkk123;

--## 賦予默認序列的權限
alter default privileges in schema public grant all privileges on sequences to tkk123;


--## 單獨給用戶,賦予訪問數據庫權限,schema權限
grant connect on database "testdb" to tkk123;
grant usage on schema tkk123 to tkk123;
alter schema tkk123 owner to tkk123;

--## 授予管理員權限
alter user tkk123 with superuser ;
alter user name rename to new_name


附注1:
SQL Server默認訪問當前shema 及 權限范圍的owner為dbo的對象(設置為sysdba權限后,默認訪問dbo)
Oracle 用戶和schema使用同一概念,MySQL數據庫和Schema是同一概念,所以都不存在此問題。


附注2:
--## psql常用命令
psql -U username -d dbName
\l    列出所有數據庫
\du   列出所有用戶
\db   列出所有表空間
\dn   列出連接數據庫中所有schema
\dt   列出連接數據庫中所有表
\di   列出連接數據庫中所有index
\dv   列出連接數據庫中所有view
\h    sql命令幫助
\?    \ 所有命令幫助
\q    退出連接
\d tablename  列出指定tablename的表結構
\c dbName     切換數據庫


附注3:
select version(), txid_current(), pg_backend_pid(), current_user, current_schema, current_timestamp;
select * from pg_catalog.pg_stat_activity psa ;

select * from pg_catalog.pg_database pd ;
select * from pg_catalog.pg_tablespace pt ;
select * from pg_catalog.pg_user pu ;
select * from pg_catalog.pg_namespace pn  ;  --# schema 
select * from pg_catalog.pg_class pc where pc.relkind in ('r');
select * from pg_catalog.pg_tables pt ;
select * from pg_catalog.pg_views pv ;
select * from pg_catalog.pg_sequences ps ;
select * from pg_catalog.pg_constraint pc ;
select * from pg_catalog.pg_indexes pi ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM