My Life My Dream!

守信 求实 好学 力行
随笔 - 193, 文章 - 0, 评论 - 55, 阅读 - 34万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

PostgreSQL用户访问多个schema及其他常用命令

Posted on   召冠  阅读(3054)  评论(0编辑  收藏  举报
复制代码
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 ;
复制代码

 

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示