用户权限

存储过程对象

SQL> create table account(account_id varchar2(5),name varchar2(10),sum number(10,2));

SQL> insert into account values(‘10001‘,‘tom‘,50000);

SQL> insert into account values(‘10002‘,‘kate‘,0);

SQL> select * from account;

模拟银行转账

create or replace procedure pro_zz(zc_zh in varchar2,zr_zh in varchar2,zz_je in int)

as

var_sum int:=0;

begin

select sum into var_sum from account where account_id=zc_zh;

if var_sum<zz_je then

dbms_output.put_line(‘meiqianle!‘);

else

update account set sum=sum-zz_je where account_id=zc_zh;

dbms_output.put_line(‘zhuanchuchengong!‘);

update account set sum=sum+zz_je where account_id=zr_zh;

dbms_output.put_line(‘zhuanruchenggong!‘);

commit;

end if;

end;

/

(zc_zh 转出帐户,zr_zh 转入帐户,zz_je 转账金额)

SQL> set serveroutput on (显示过程)

SQL> exec pro_zz(‘10001‘,‘10002‘,10000);

SQL> select * from account;(tom少10000,kate多10000)

超过2w不让转帐

create or replace procedure pro_zz(zc_zh in varchar2,zr_zh in varchar2,zz_je in int)

as

var_sum int:=0;

var_vvv int:=0;

begin

select sum into var_sum from account where account_id=zc_zh;

if var_sum<zz_je then

dbms_output.put_line(‘meiqianle!‘);

else

update account set sum=sum-zz_je where account_id=zc_zh;

dbms_output.put_line(‘zhuanchuchengong!‘);

update account set sum=sum+zz_je where account_id=zr_zh;

dbms_output.put_line(‘zhuanruchenggong!‘);

insert into jy (account_id,zr_id,je)values(zc_zh,zr_zh,zz_je);

end if;

select sum(je) into var_vvv from jy where account_id=zc_zh;

if

var_vvv > 20000 then

dbms_output.put_line(‘burangzhuanle‘);

rollback;

else

dbms_output.put_line(‘chenggong!!!!!‘);

end if;

commit;

end;

/

-------------------------

加一个限制约束条件

1.

SQL> alter table account add constraint ch_01 unique(account_id);

(account_id 唯一)

2.(帐户的金额不能大于40000)

alter table account

add constraint ch_02

check (sum<=45000)

enable novalidate;(表中已经有数据时,不对之前的数据进行验证)

3.SQL> select * from account;

4.SQL> exec pro_zz(‘10001‘,‘10002‘,40000);(不成功因为不能大于40000)

SQL> alter table account drop constraint ch_01;

(删除表的约束)

SQL> select constraint_name,table_name from user_constraints;

(查看所有表的约束)

SQL> select * from v$sqltext where SQL_TEXT like ‘%pro_zz%‘;

(执行的储存过程)

业务中储存过程的好处:前端只需要传输值就可以,不用传输sql语句了.数据库自行调用储存过程,减少了网络的传输量

-------------------------

SQL> create tablespace tbs_icbc datafile ‘/u01/app/oracle/oradata/orcl/tbs_icbc.dbf‘ size 10M;

SQL> create temporary tablespace tbs_temp tempfile ‘/u01/app/oracle/oradata/orcl/tbs_temp.dbf‘ size 10M;

查看库下用户

select * from all_users;

查看用户信息

select * from user_users;

创建用户(undo只能用一个)

SQL> create user icbc identified by icbc

default tablespace tbs_icbc

temporary tablespace tbs_temp

account unlock;

SQL> conn icbc/icbc(不能登陆,没有创建会话权限)

ERROR:

ORA-01045: user ICBC lacks CREATE SESSION privilege; logon denied

SQL> grant create session to icbc;(sys用户登陆下)[系统权限]

SQL> conn icbc/icbc(可以正常登陆)

SQL> show user

USER is "ICBC"

------------------------------------

查看用户默认表空间

select default_tablespace from dba_users where username=‘SCOTT‘;

修改用户默认表空间

SQL> alter user scott default tablespace system;

--------------------------

1.

SQL> create table tt(id int);(报错 没有创建表的权限)

create table tt(id int)

*

ERROR at line 1:

ORA-01031: insufficient privileges

2.

SQL> grant create table to icbc;(sys用户登陆下)

3.

SQL> create table tt(id int);(在表空间上权限不足,没有给用户空间配额)

4.SQL> alter user icbc quota 10M on tbs_icbc;(赋予用户空间配额,sys用户下)

SQL> alter user icbc quota unlimited on tbs_icbc;(不限制空间)

5.SQL> create table tt(id int); 可以创建

-----------------------

SQL> conn scott/abc

SQL> grant select on emp to icbc;(scott用户下)

(赋予icbc用户读 scott用户emp权限)

SQL> create table t_big as select * from scott.emp;(icbc用户下)[对象权限]

SQL> insert into t_big select * from t_big;

SQL> / (多次执行一直到超出配额限制)

SQL> select count(*) from t_big;

COUNT(*)

----------

114688

SQL> desc t_big

SQL> select * from t_big order by MGR desc;

(用户排序时,首先把排序结果放到pga中,pga空间不够时,使用用户默认的临时表空间)

查看临时表空间,排序会使用到临时表空间(windows客户端查看)

--------------------------

主键  外键

zs 用户

SQL> create table t1 (id int primary key);

SQL> insert into t1 values(1);

SQL> commit;

SQL> grant select on t1 to ls;

SQL> grant references on t1 to ls;(赋予 参考 权限,供ls用户做外键使用)

ls 用户

SQL> create table t2 (id int);

SQL> alter table t2 add constraint tf foreign key(id) references zs.t1(id); (添加外键)

验证:

SQL> insert into t2 values(1);  (可以 因为zs.t1表中存在)

SQL> insert into t2 values(2);   (不可以  因为zs.t1表中不存在)

--------------------------

用户资源限制

SQL> show parameter process (默认150个连接数 包含所有进程)

SQL> alter system set processes=100 scope=spfile;

SQL> startup force

测试(如果设置 processes 为10 结果的情况?)

SQL> select count(*) from v$process;

查看当前启动的进程(每个会话为一个进程)

用户会话限制

1.创建配置文件 限制用户3个会话

SQL> create profile PRO_TEST limit

2  sessions_per_user 3;

2.

SQL> alter user SCOTT profile PRO_TEST;(给scott用户应用)

3.

SQL> show parameter limit(限制默认为关闭状态)

SQL> alter system set resource_limit=true; 打开限制

SQL> show parameter limit

4.[[email protected] ~]$ sqlplus /nolog

SQL> conn scott/abc  (操作三次)

5.第四次

SQL> conn scott/abc

ERROR:

ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit

SQL> alter profile PRO_TEST limit idle_time 1;(限制会话空闲1分钟 断开)

SQL> drop profile PRO_TEST cascade;(已分配的profile,删除时必须加cascade选项,DEFAULT为默认profile,不能删除)

---------------------

profile 里参数

LOGICAL_READS_PER_CALL:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。

CONNECT_TIME:指定会话的总的连接时间。(单位:分钟)

PRIVATE_SGA:指定一个会话可以在共享池(SGA)中所允许分配的最大空间(单位:字节)

注:该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL

PASSWORD_LIFE_TIME:指定同一密码所允许使用的天数。

password_reuse_time指定了密码不能重用前的天数

password_reuse_max则指定了当前密码被重用之前密码改变的次数

-----------------------------

删除icbc 并把用户下所有对象

SQL> drop user icbc cascade;

查看用户信息

SQL> select * from dba_users;

查看表空间配额

SQL> select * from dba_ts_quotas;(dba不受配额限制)

-------------------------------

用户角色

1.预定义角色

CONNECT, RESOURCE, DBA

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE(资源):拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,

SQL> grant dba to scott;

SQL> revoke dba from scott;(回收角色)

查询用户拥有哪里权限

select * from dba_role_privs;(查看哪个用户创建的角色)

select * from dba_sys_privs; (查看用户权限)

select * from role_sys_privs;(查看角色中的权限)

2.实体权限

select, update, insert, alter, index, delete, all

3.自建立角色

SQL> create role role1;

给角色赋权限(创建表和创建储存过程)

SQL> grant create any table,create procedure to role1;

把角色 赋予用户

SQL> grant role1 to scott;

删除角色

SQL> drop role role1;

--------------------------------------

验证模式:

1.系统认证

2.密码文件认证

[[email protected] admin]$ vi sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

此时本地sys用户的认证方式为系统认证,即可以 sqlplus / as sysdba 方式登录

如果在sqlnet.ora 中额外添加:

SQLNET.AUTHENTICATION_SERVICES= (NTS)   或  SQLNET.AUTHENTICATION_SERVICES= (NONE)

NTS:为windows专用     linux用 NONE

把SQLNET.AUTHENTICATION_SERVICES= (NONE) 添加到NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)上面

再次登陆时 sys需要密码

时间: 2024-10-28 20:35:03

用户权限的相关文章

Oracle 表空间和用户权限管理

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

influxdb用户权限篇

设置TS的authorized,提高安全性,针对指定用户拥有权限才能访问数据库的数据,TS默认用户分为普通用户和管理员用户,权限分为read,write,all privileges三种权限 添加用户可以通过终端或者WEB方式2种方式: 开启一个用户权限的过程: 1.在安装好数据库后,通过默认方式登陆数据库:[[email protected] ~]# influx 2.添加用户 CREATE USER "influxdb" WITH PASSWORD 'root123' WITH A

centos用户权限管理

进程是以其发起者的身份运行的,它对文件的访问权限,取决于此进程的用户的权限.在linux操作系统启动的过程中,为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,而这类用户从不需要登录系统,仅让其他进程以他的身份运行,从而仅能获取普通权限的用户.为此这部分用户称系统用户.同时用户与组密不可分.进程的运行是以它的属主(又称,发起者)来访问的.它能访问资源的权限取决于发起者对某个资源的访问权限.下面是从用户和授权两个角度来讲解用户授权管理. 用户管理 用户按类别分管理员

实现业务系统中的用户权限管理--实现篇

在设计篇中,我们已经为大家阐述了有关权限管理系统的数据库设计,在本篇中,我们将重点放在其实现代码部分.为了让你能够更直接更有效的看到全部动作的代码,我们使用"动作分解列表"的方式来陈述每个动作以及相关资源. 实现权限管理功能的动作 动作分解 动作名 相关表名 操作集类型 (S,U,I,D,SQL) 表单 模组 字符资源 是否分页? 返回提示? 权限检测 权限初始化安装 setup 无 无 无 setup setupok 否 否 否 显示添加管理组界面 addnewgroup 无 无 a

vcneter5.5添加域用户权限

安装完vCenter5.5之后,发现不能添加域用户来管理vSphere,查了文档,原来是现在安装vCenter Single Sign-on的时候创建了一个默认域:vsphere.local. 添加用户时,没有域用户可以选择添加,如图: 要添加域用户权限,必须添加标识源,添加标识源的方法如下: 使用[email protected]通过web client登陆vCenter: https://192.168.2.202:9443/vsphere-client/ 配置SSO用户认证标识源 登录后,

企业生产环境用户权限集中管理方案案例

建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后,召集大家开会讨论. 讨论确定可行后,由我负责推进实施 实施后结果,公司服务器权限管理更加清晰了. 制定账号权限申请流程以及权限申请表格 1问题现状 当前我们公司服务器上百台,各个服务器上需要管理的人很多(开发+运维+架构+DBA+产品+市场),在大家同时登录Linux服务器的时候,不同职能员工的水平不同,因此导致很不规范,root权限泛

linux用户权限管理

在Linux中,权限的分配和管理是一件很重要的事.因为这对系统中文件的管理非常重要.如何分配好权限是其中的关键. 权限分为两种使用权(MODE)和所有权(OWNERSHIP) 首先我来看一下MODE的构成: r:可读 w:可写 x:executable可执行 对目录来说: 拥有r权限时可以使用ls命令来查看目录 拥有w权限时可修改此目录下的文件名或文件列表,即可删除文件 拥有x权限时可以使用ls -l命令来获取其中的文件的详细信息(这是基本权限,没有                 时什么都做不

Linux运维六:用户管理及用户权限设置

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账号的添加.删除与修改. ·

linux基础 &nbsp; 用户权限列表

#####用户权限列表###### ###1.权限列表的定义#### 指定特殊用户对某个文件有特殊的权限标记表格 ####2.权限列表的识别####### [[email protected] mnt]# ls  -l file -rw-r--r--. 1 root root 0 Nov 16 20:12 file        ###权限位是.表示权限列表未激活 [[email protected] mnt]# getfacl file                ###权限列表查看 # f