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 ;