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 ;