我平时使用数据库很少会有赋权的操作,但是最近有个场景需要给某个用户设置只能操作哪些数据库和表还有序列。我分享一下我的经验,我用的是 PostgreSQL 数据库。

赋权命令语法

PostgreSQL 中的赋权命令是 GRANT 和 REVOKE。

GRANT 命令用于授予某个用户或用户组对某个对象(如表、视图、函数等)的某种权限(如 SELECT、INSERT、UPDATE、DELETE 等)。

语法:

GRANT privilege [, ...] ON object TO {user | group | PUBLIC} [, ...] [WITH GRANT OPTION];

其中,privilege 是一种权限,object 是一个对象,可以是表、视图、函数等,user 或 group 是要授予权限的用户或用户组,PUBLIC 表示所有用户。

例如,授权用户 zhangsan 对表 test 执行 SELECT 和 INSERT 操作:

GRANT SELECT, INSERT ON test TO zhangsan;

REVOKE 命令用于取消某个用户或用户组对某个对象的某种权限。

语法:

REVOKE privilege [, ...] ON object FROM {user | group | PUBLIC} [, ...] [CASCADE | RESTRICT];

其中,privilege、object、user 或 group、PUBLIC 的含义与 GRANT 命令相同。

例如,取消用户 zhangsan 对表 test 的 SELECT 权限:

REVOKE SELECT ON test FROM zhangsan;

需要注意的是,只有超级用户才有赋权和收回权限的权限。

实战

查看所有用户

SELECT * FROM pg_user;

创建用户并设置密码

CREATE USER zhangsan WITH PASSWORD '123456';

删除用户 

DROP USER zhangsan;

创建数据库

CREATE DATABASE test;

删除数据库

DROP DATABASE IF EXISTS test;

移除用户对"test"数据库的权限 

REVOKE ALL privileges ON DATABASE "test" FROM zhangsan;

赋予用户操作"test"数据库的权限 

GRANT CONNECT, CREATE, TEMPORARY ON DATABASE "test" TO zhangsan;

赋予用户操作"test"数据库的表的权限 

GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA PUBLIC
TO zhangsan;

赋予用户操作"test"数据库的序列的权限

序列的权限定义

官方文档中可以看到序列的所有权限为rwU,分别对应SELECT、UPDATE、USAGE;

对于序列,SELECT权限允许使用 currval 函数

对于序列,UPDATE权限允许使用 nextval 和 setval 函数

对于序列,USAGE权限允许使用 currval 和 nextval 函数

如果需要有修改序列的权限可以直接赋权ALL,如下 

GRANT SELECT, UPDATE, USAGE ON ALL SEQUENCES IN SCHEME PUBLIC TO zhangsan;

如果只是使用序列不需要修改可以赋权USAGE

GRANT USAGE ON ALL SEQUENCES IN SCHEME PUBLIC TO zhangsan;

PostgreSQL 数据库赋权命令相关推荐

  1. 【权限提升】61 Redis Postgresql数据库提权

    目录 redis数据库权限提升 Redis未授权访问漏洞利用 1. 利用计划任务执行命令反弹shell 2. 写ssh-keygen公钥后 使用私钥登录 3. 往web路径写webshell 修复方案 ...

  2. postgresql数据库工作常用命令-(数据库性能检查相关命令) -TODO

    文章目录 一.postgresql数据库工作常用命令 1. 数据库性能检查相关命令 2. 表结构信息查询 3. 命令行下更好显示 查询结果 一.postgresql数据库工作常用命令 查看当前都有什么 ...

  3. oracle数据库赋权_Oracle角色权限创建用户赋权

    1.权限&用户 角色权限: Sysdba:可以改变字符集.创建删除数据库.登录之后用户是SYS(可以启动和关闭数据库) Sysoper:不可改变字符集.不能创.删数据库.登陆之后用户是PUBL ...

  4. oracle数据库赋权_实用的数据库赋权的存储过程,用于oracle

    存储过程对所有数据库内容进行赋权和同义词,赋权的帐号通过参数传入,本代码设定的帐号有6个. ----------Create on 2017-08-21 by i-24@qq.com publish ...

  5. oracle数据库赋权_oracle数据库用户之间授权

    今天遇到一个数据库的问题: 系统数据库用户下创建了几个视图用于外部系统开发报表使用,当外部系统提取视图数据时,需要通过一个只能访问需要视图权限的用户,于是想到给他创建一个新的用户,并给这个用户分配只能 ...

  6. oracle数据库赋权_oracle数据库删除赋权

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. linux脚本赋权命令765,Linux权限命令chmod

    一.Linux chmod命令修改文件和文件目录权限(默认情况下只有root用户才能使用).命令格式:chmod+修改内容+要修改的文件或者 目录 或者 chmod -R 修改内容 要修改的文件或者 ...

  8. 离线安装PostgreSQL数据库(v13.4版本)

    记录:328 场景:在CentOS 7.9操作系统上,离线安装PostgreSQL数据库,版本:v13.4.主要是PostgreSQL的编译.安装.启动.登录.设置远程可登录.创建数据库.创建数据库用 ...

  9. 解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题

    一种情况 mysql的赋权操作:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION: ...

最新文章

  1. 文巾解题 面试题 01.06. 字符串压缩
  2. 最强六大开源轻量级人脸检测项目分析 | 附打包下载
  3. arduino与matlab联调出现问题
  4. Java嵌入oracle,Java插入Oracle Spatial空间数据
  5. 伤钱伤感情 10件不能和亲戚一起干的事儿
  6. python文件是怎么写_python头文件怎么写
  7. mysql-电商库演练2-拆表-修改字段-添加外键
  8. JS代码混淆 支持PHP .NET PERL
  9. 【续上篇】推荐一款液晶电视测试软件
  10. 使用iframe实现在pc端预览移动端页面的效果
  11. omv搭建php,家用NAS系统openmediavault插件开发
  12. 使用PHP来获取客户端和服务端IP
  13. 微信小程序服务通知 模板消息
  14. Elasticsearch 快照到 HDFS 遇到的 PrivateCredentialPermission 问题及解决方法
  15. Android一些控件上显示的英文字母都被转为大写字母的原因分析及问题解决
  16. 安卓app开机自启动代码
  17. 软件技术部python培训
  18. 云计算基础设施总体架构介绍
  19. docker启动es报错:failed to obtain node locks...
  20. mysql 建立超级用户_mysql创建超级用户

热门文章

  1. HashMap 在 JDK1.7 和 JDK1.8 中有哪些区别?
  2. github验证邮箱问题
  3. 【转帖】大数据时代的文化与版权
  4. question,problem,issue,matter,区别和用法
  5. 新闻|智链万源CEO董宁受邀参加2019可信区块链峰会,解读溯源行业标准
  6. 禾赛获上汽飞凡前装量产定点,飞凡全新车型将搭载AT128
  7. 【Book】剑指Offer -- By 何海涛
  8. PreCreateWindow作用
  9. 马云卸任阿里CEO 演讲笔记
  10. docker(3) : 相关连接