回 帖 发 新 帖 刷新版面

主题:[原创]Sql server基础知识--安全

七、安全 
数据库的安全:包括系统安全和数据安全
1.    系统权限:访问数据库的权限,用于执行数据定义和数据控制命令,和其他数据导向性行为。CREATE SESSION,CREATE USER, DROP USER, 和 BACKUP ANY TABLE,这些是系统权限
2.    用户系统权限:建立会话,建立表,建立序列,建立视图,建立过程

3.    赋权
grant select on tablename to username (public//给所有用户)
     with grant option;   //被赋予的人就可以把权限再给别人
             GRANT update (dname, loc)  ON    dept  TO    scott, manager;
可以具体到列
GRANT ALL ON inventory TO joe; 
这命令使用了关键字ALL,向joe授予了在inventory表上ALTER, INDEX, INSERT, REFERENCES, SELECT, UPDATE, 和DELETE的权限。 

4.    消权限
revoke select ,insert on tablename from username
REVOKE references 
ON inventory 
FROM joe 
CASCADE CONSTRAINTS; 
这命令实现了两个作用:
1 所有由joe创建的FOREIGN KEY 约束被删除 
2 他创建 FOREIGN KEY约束的能力被取消了。

撤消只能相对表不能相对字段
如果撤消了某个用户,那么由这个用户为其他用户赋的权限也一起取消
要是你想通过命令REVOKE来回收用户A的某一权限,那你必须是当初的授权人。



5.    知识点:
a)    INDEX对象权限可被授予一个用户,但不能授予一个角色(role)。它允许用户使用CREATE INDEX
b)    对象权限REFERENCE只能授予用户,不能授予角色(role)。
c)    只有拥有DBA权限或ALTER UAER权限的用户才能替普通用户修改密码
d)    要能创建用户,你必须拥有CREATE USER权限。要想有权访问数据库,你需拥有CREATE SESSION权限。要想在任何方案(schema)中创建和删除次表,你必须拥有CREATE ANY TABLE 和DROP ANY TABLE权限,要想在自己的方案(schema)中创建和删除次表,你必须拥有CREATE TABLE 和DROP TABLE权限。
e)    如果要删除kate select 表的权限。那么删除者必须是当初给kate赋权限的人
f)    CREATE OR REPLACE ROLE rolename是个无效的命令
正确的只有CREATE ROLE rolename
g) 如何一次性删除某个用户的所有对象?
drop user username cascade

回复列表 (共1个回复)

沙发

待续。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册