Oracle权限管理初探一

以下都是在命令行的操作:
1.以sys管理员的身份登入oracle的数据库:
方法:程序?运行?输入:cmd?在命令行输入:sqlplus / as sysdba .
可能出现的异常:协议适配器错误。
原因:服务未打开(至少应该打开实例和监听)。
启动方法:除了进入服务进行操作外,可以继续在命令行输入:lsnrctl start ----启动监听,输入:oradim –startup –sid orcl (注意这个末尾的orcl是数据库名字,根据自己需要改变)----启动所需数据库的实例。
然后重新登入即可。
2.在命令行输入show users ,可以得到用户列表。
3.sys管理员创建普通用户:
在命令行输入 create user 用户名 identified by 密码;回车即可。
新开一个命令行窗口进行以下操作:
当输入sqlplus 用户名/密码;登入时可能出现的问题:
这个刚创建的用户不能使用,报出:用户某某没有创建session的权限,登录被拒绝。
原因:用户某某没有创建session的权限,就是未给用户授权。
4. sys管理员给已创建的用户授权登入:
在命令行输入:grant create session to 用户名;这时该用户拥有登入数据库的权限了。
5. sys管理员给已创建的用户授权建表(注意管理员无删表的授权操作给用户):
说明:用户使用建表权限的前提是有使用表空间的权限。
在命令行输入:grant unlimited tablespace to 用户名;用户拥有使用表空间的权限。
在命令行输入:grant create table to 用户名; 用户拥有建表权限了。
也可以输入:grant create table,unlimited tablespace to 用户;给用户创建多个权限。
当用户拥有以上两个权限后,用户就拥有了对自己创建的表的增删改查的权限了。
6.新用户建表:(用标准的sql语句即可)
方法:create table 表名 (列名 数据类型,……)
7. sys管理员给已授权的用户撤销建表权限:
方法:revoke create table from 用户名;
8.当前用户如何知道自己的权限呢:
在命令行输入:select * from user_sys_privs;
说明:user_sys_privs是系统自己的一个视图,用来存放用户拥有的权限列表。
9.关于oracle中的权限:
oracle中的权限分为系统权限和对象权限两种。
系统权限:比如访问数据库,建表啊等等,由管理员管理。
对象权限:就是用户们之间的授权或撤销。
10.两个普通用户是否可以互相访问对方的数据呢
说明:在Oracle数据库中用户之间是分隔开的。
方法:被访问的用户先授权给要访问的用户,然后在用户自己的命令行窗口输入:select * from 用户名.表名;
11.用户a授权给用户b访问自己的表:
方法:grant select on 表名 to 用户b;
依此类推,grant select,insert,update,delete on 表名 to 用户b;那么用户b就有了四个权限了。
也可以是:grant all on 表名 to 用户b; 那么用户b就有所有权限了。
对应的撤销权限就是 :revoke 权限名 on 表 to 用户b;
这个就是对象权限范畴的。
12.当相互访问表时可能出现的问题:
①表或视图不存在,原因:a:无权限(解决方法看11)b:sql语句未加用户名。
②未选定行,原因:a:被访问的用户尚未提交操作(当被访问的用户commit后即可);b:撤销权限了;c:表中无记录。
13.sys管理员给所有用户授权:
方法:grant 系统权限名 to public;
说明:public 就指所有用户了。
14.用户如何知道自己对表有那些权限呢
方法:select * from user_tab_privs;
15.用户如何断开连接呢
方法:在命令行输入:disconn;
连接的方法是:conn 用户名/密码;
16.用户如何修改表建构
方法: alter table 表名 add 新列名 数据类型;
可能出现的问题:资源正忙,但指定以nowait方式获取资源。
原因是:其它用户正在访问这个表。
17.在命令行输入show user 可以知道当前用户。
18.用户如何把权限控制到列上(只限insert和update)
方法:grant 权限(列名1,列名2,……) on 表名 to 用户。
19. 用户如何知道自己对列有那些权限呢
方法:select * from user_col_privs;隶属对象权限。

20.系统权限传递

方法:管理员授权给用户时,赋给用户管理员的特权

例子:grant alter any table to 用户a  with admin option;

那么这个用户a就有了传递alter  any table权限的特权。

21.对象权限传递

方法:用户授权给另外一个用户时,赋给他grant 特权

例子:grant select on 表名 to 用户a  with grant option;

那么这个用户a就有了传递对表的select权限的特权。

【在此感谢传智播客的老师们】

 

 

 

 

 

 

 


你可能感兴趣的:(oracle,sql)