MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

文章目录

前言

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。

MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

一、PostgreSQL

  1. PostgreSQL的数据库对象及权限管理分层管理。
    一个实例下可以有多个数据库,每个数据库下有多个schema,每个schema下有不同的数据库对象,用户A要访问某个数据库的表,需要依次获取对该数据库(可以访问多个数据库)、该schema、该表的权限,才能成功访问。
  2. user和schema不是绑定的
    默认情况下,在一个数据库内新建一个新用户时会默认创建该用户的同名schema,该用户拥有对同名schema的所有权限,同时,也可以新建其他schema,一个用户可以拥有、访问多个schema。
    3.权限管理分为:管理员权限和对象权限
    管理员与实例权限:SYSADMIN(系统管理员权限)、MONADMIN(监控管理员权限)、OPRADMIN(运维管理员)、POLADMIN(安全策略管理员权限)、AUDITADMIN(审计管理员权限)、LOGIN、CREATEDB、CREATEROLE、USEFT、CREATEROLE。
    对象权限:对database、schema、table、package、等对象insert、select等权限
sql 复制代码
管理员与实例权限赋权语句
create user XXX SYSADMIN|LOGIN|CREATEDB....(不一一举例,);
alter user XXX SYSADMIN|LOGIN|CREATEDB....(不一一举例,);
对象权限(不一一举例)select、update、insert等等权限
grant all privileges on database XXX to user;
grant all privileges on schema A to XXX;
grant all privileges on table tabname to XXX;

二、MySQL

  1. schema和数据库(database)是相同的
    也就是说schema名称和数据库实例的名称是相同的,一个数据库只拥有一个schema。
  2. 权限管理分为:全局权限、数据库权限、对象权限。

三、Oracle

  1. Oracle 用户user和schema强绑定
    oracle一般(严谨点)一个集群只有一个数据库,一个数据库下可以有多个user(schema),一个用户只能有一个schema
  2. 权限管理份分为:系统权限和对象权限
    系统权限 :oracle总计有225种系统权限,系统规定使用数据库的权限。对oracle来说,对数据库和对模式的权限属于系统权限。包括dba权限
    用户权限:授权给表、视图、序列、同义词的权限
sql 复制代码
系统权限
GRANT <系统权限名称> TO {PUBLIC | <角色名> | <用户名>[,...N]} [WITH ADMIN OPTION]
WITH ADMIN OPTION表示指定用户可以将这些权限授予该其他的用户。
系统权限:(不一一举例)
系统权限包括 数据库维护权限
ALTER DATABASE            修改数据库的结构
ALTER SYSTEM            修改数据库系统的初始化参数
DROP PUBULIC SYNONYM    删除公共同义词
create procedure        在自己的模式中创建存储过程
drop procedure            在自己的模式中删除存储过程
create database link    创建数据库连接权限,通过数据库连接允许用户存取远程的数据库。
drop datebase link        删除数据库的连接
create synonym            创建私有同义词
drop synonym            删除同义词
create sequence            创建开发者所需的序列
create trigger            创建触发器
------------------------------------------------
对象权限
对象权限的授予
GRANT {<对象权限名> | ALL [PRIVILEGE] [(<>[,...N])]}
ON [用户方案名.]<对象权限名> TO {PUBLIC | <角色名>| <用户名>[,...N]}
[WITH GRANT OPTION]
对象权限分类
SELECT:读取表,视图,序列中的行;
UPDATE:更新表,视图和序列中的行;
DELETE:删除表,视图中的数据;
INSERT:向表和视图中插入数据;
EXECUTE:执行类型,函数,包和过程;
READ:读取数据字典中的数据;
INDEX:生成索引
ALTER:修改表,序列,同义词中的结构。



                 
相关推荐
ss2735 小时前
PostgreSQL常见索引问题与解决方案
数据库·postgresql
小徐不徐说5 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
海宇AI5 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH6 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_963282776 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
瀚高PG实验室7 小时前
发布端逻辑复制槽消失
数据库·postgresql·瀚高数据库
ss2737 小时前
PostgreSQL慢查询定位与优化
数据库·postgresql
叼烟扛炮7 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
香蕉大香蕉(06敬畏市场)7 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
smilejingwei8 小时前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql