浅析PG数据库如何授权/撤销用户权限
每当在数据库中创建一个对象,所有者可以分配它访问权限。所有者通常是执行创建语句的用户。对于大多数类型的对象,初始状态是:只有所有者(或超级用户)可以修改或删除对象。为了让其他角色或用户使用它,特权或权限必须是理所当然。
为了给用户分配权限,使用 GRANT 命令。
一、授权语法
1、GRANT命令的基本语法如下:
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
-
privilege 可能的值有: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.
-
object: 名称对象授予访问权限。可能的对象是:表,视图,序列
-
PUBLIC A 缩写形式,代表所有用户。
-
GROUP group: 组授予权限。
-
username: 授予权限的用户的名称. PUBLIC 是一个简短的形式,代表所有用户。
2、实例
要了解权限,让我们先创建一个USER如下:
testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE
消息CREATE ROLE表明USER“manisha”创建成功。考虑有如下记录
接下来,让我们把表 COMPANY 所有权限授予用户“manisha”如下
testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT
GRANT消息表明,所有的权限被分配给USER。
再比如我们脚本里用到的:把 edu 的所有权限授予用户 root
GRANT ALL PRIVILEGES ON DATABASE edu to root;
二、权限可以使用 REVOKE 命令撤销
1、REVOKE命令的基本语法如下:
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
-
privilege 可能的值有: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.
-
object: 名称对象授予访问权限。可能的对象是:表,视图,序列
-
PUBLIC 简短形式,代表所有用户.
-
GROUP group: 组授予权限。
-
username: 授予权限的用户的名称. PUBLIC是一个简短的形式,代表所有用户。
2、实例
// 让我们撤销权限,从USER中的“MANISHA”如下:
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
// REVOKE消息表明,所有的权限被撤销的USER。
// 甚至可以删除用户如下:
testdb=# DROP USER manisha;
DROP ROLE
// 消息DROP ROLE表示用户MANISHA已从数据库中删除。
原文地址:https://www.cnblogs.com/goloving/p/15096608.html
- 分析漏洞利用工具包 Archie和Astrum工具包
- 手游热更新方案xLua开源:Unity3D下Lua编程解决方案
- 如何为Keras中的深度学习模型建立Checkpoint
- Dubbo 源码解析 —— Zookeeper 创建节点
- 熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker
- 源码级别解读 mybatis 插件
- 在WebKit中并行加载外部脚本译:
- 100行代码,搞定http监控框架
- 【腾讯反病毒实验室】深度剖析APT28最新作品
- [译]clearfix改良及overflow:hidden详解
- 深入解析CSS样式层叠权重值
- [译]CSS边框实现“无图化”设计
- 自适应的多列图文混排改进
- [译]Laravel 5.0 之运行环境及环境变量
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS7使用dnf安装mysql的方法
- Linux中crontab定时任务不执行的原因
- Linux系统为什么要吃掉我的“内存”
- 教你如何修改Linux远程登录欢迎提示信息
- 详解linux 定时任务 crontabs 安装及使用方法
- 解决Centos7安装nginx后提示“Welcome to nginx on Fedora!”,conf.d目录下无default.conf文件
- 详解Linux中PostgreSQL和PostGIS的安装和使用
- 检测ip和port是否可连接的方法
- Linux关机时执行指定脚本功能实现
- 适用于稀疏的嵌入、独热编码数据的损失函数回顾和PyTorch实现
- CentOS7下实现终端输入中文设置详解
- CentOS 7.2搭建VNC远程桌面服务的方法
- Ubuntu挂载3T硬盘或大于2T磁盘的方法
- linux chroot命令详解
- Linux中如何查询运行文件的全路径的方法