Oracle(91)如何授予权限(Grant)?

2024-08-29 09:12
文章标签 oracle 91 grant 权限 授予

本文主要是介绍Oracle(91)如何授予权限(Grant)?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Oracle数据库中,授予权限(Grant)是数据库管理员(DBA)日常工作的一部分。权限可以分为系统权限和对象权限。系统权限允许用户执行特定的数据库操作,而对象权限允许用户对特定的数据库对象(如表、视图、序列等)执行操作。

系统权限 vs. 对象权限

  • 系统权限:与数据库级别的操作相关,例如创建会话、创建表、创建视图等。
  • 对象权限:与数据库对象相关,例如对特定表的SELECT、INSERT、UPDATE、DELETE操作。

授予系统权限

系统权限允许用户执行数据库级别的操作。以下是一些常见的系统权限及其授予方法。

1. 连接数据库

首先,以具有管理员权限的用户(如SYSSYSTEM)连接到Oracle数据库。

-- 使用SQL*Plus连接到数据库
sqlplus sys as sysdba
-- 或者使用其他工具如SQL Developer连接
2. 授予系统权限

使用GRANT语句授予系统权限。例如,授予用户创建会话、创建表和创建视图的权限。

-- 授予CREATE SESSION权限(允许用户连接到数据库)
GRANT CREATE SESSION TO my_user;-- 授予CREATE TABLE权限(允许用户创建表)
GRANT CREATE TABLE TO my_user;-- 授予CREATE VIEW权限(允许用户创建视图)
GRANT CREATE VIEW TO my_user;

授予对象权限

对象权限允许用户对特定的数据库对象执行操作。以下是一些常见的对象权限及其授予方法。

1. 授予表的对象权限

授予用户对表的SELECT、INSERT、UPDATE、DELETE权限。

-- 授予SELECT权限(允许用户查询表)
GRANT SELECT ON my_schema.my_table TO my_user;-- 授予INSERT权限(允许用户插入数据)
GRANT INSERT ON my_schema.my_table TO my_user;-- 授予UPDATE权限(允许用户更新数据)
GRANT UPDATE ON my_schema.my_table TO my_user;-- 授予DELETE权限(允许用户删除数据)
GRANT DELETE ON my_schema.my_table TO my_user;
2. 授予视图的对象权限

授予用户对视图的SELECT权限。

-- 授予SELECT权限(允许用户查询视图)
GRANT SELECT ON my_schema.my_view TO my_user;
3. 授予序列的对象权限

授予用户对序列的SELECT和ALTER权限。

-- 授予SELECT权限(允许用户查询序列的当前值)
GRANT SELECT ON my_schema.my_sequence TO my_user;-- 授予ALTER权限(允许用户修改序列的属性)
GRANT ALTER ON my_schema.my_sequence TO my_user;

授予角色

角色是权限的集合,可以将多个权限分配给一个角色,然后将角色授予用户。这样可以简化权限管理。

1. 创建角色

首先,创建一个角色。

-- 创建角色
CREATE ROLE my_role;
2. 为角色分配权限

将所需的系统权限和对象权限分配给角色。

-- 分配系统权限给角色
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO my_role;-- 分配对象权限给角色
GRANT SELECT, INSERT, UPDATE, DELETE ON my_schema.my_table TO my_role;
3. 将角色授予用户

将创建的角色授予用户。

-- 将角色授予用户
GRANT my_role TO my_user;

示例脚本

以下是一个完整的示例脚本,展示如何授予权限和角色。

-- 连接到数据库
-- sqlplus sys as sysdba-- 创建用户
CREATE USER my_user 
IDENTIFIED BY my_password 
DEFAULT TABLESPACE users 
TEMPORARY TABLESPACE temp;-- 创建角色
CREATE ROLE my_role;-- 分配系统权限给角色
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO my_role;-- 分配对象权限给角色
GRANT SELECT, INSERT, UPDATE, DELETE ON my_schema.my_table TO my_role;-- 将角色授予用户
GRANT my_role TO my_user;-- 直接授予系统权限给用户
GRANT CREATE PROCEDURE TO my_user;-- 直接授予对象权限给用户
GRANT SELECT, INSERT ON my_schema.my_other_table TO my_user;-- 确认用户和角色的权限
SELECT * FROM dba_sys_privs WHERE grantee = 'MY_USER';
SELECT * FROM dba_tab_privs WHERE grantee = 'MY_USER';
SELECT * FROM dba_role_privs WHERE grantee = 'MY_USER';

验证权限

为了验证新授予的权限是否生效,可以使用新用户的凭据连接到数据库并执行一些操作。

-- 使用新用户连接到数据库
sqlplus my_user/my_password@your_database-- 创建一个表
CREATE TABLE test_table (id NUMBER, name VARCHAR2(50));-- 插入数据
INSERT INTO test_table (id, name) VALUES (1, 'Test Name');-- 查询数据
SELECT * FROM test_table;-- 删除表
DROP TABLE test_table;-- 查询具有SELECT权限的表
SELECT * FROM my_schema.my_table;

总结

授予权限是Oracle数据库管理中的一个关键操作。通过上述步骤和代码示例,你可以系统地授予用户所需的系统权限和对象权限,确保用户能够执行所需的数据库操作。定期审查和管理用户权限,可以确保数据库系统的安全性和高效运行。

这篇关于Oracle(91)如何授予权限(Grant)?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117447

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为

android java.io.IOException: open failed: ENOENT (No such file or directory)-api23+权限受权

问题描述 在安卓上,清单明明已经受权了读写文件权限,但偏偏就是创建不了目录和文件 调用mkdirs()总是返回false. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_E

Android6.0以上权限申请

说明: 部分1:出自:http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/ android M 的名字官方刚发布不久,最终正式版即将来临! android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响。惊讶的是android社区鲜有谈论这事儿,尽管这事很重要或许在不远的将来会引