使用SQL管理用户和安全:
管理数据库用户管理过程:创建用户,create user user_id
identified by [password | externally ]
[default tablespace tablespace_name] [temporary tablespace tablespace_name]
[quota (integer ( K|M) | UNLIMITED ) on tablespace_name ]
[profile profile_type ]
[password expire | account [lock | unlock ] ];
授权: grant priv1 【 ,priv2】 to username | rol [, username] ;收回权限:revoke priv1 [,priv2] from username。
创建规划:create schema [schema_name ] [user_id ]
[ default character set charactor_set ]
[ path schema_name [,schema_name ]]
[ schema_name list];
删除规划:drop schema schema_name { restrict | cascade };
调整用户:重置密码:update mysql.user set password = PASSWORD(' NEW PASSWORD ')
where user = ‘username ’;
改变用户名:rename user old_username to new_username ;
用户会话:连接和断开数据库:connect TO default | string1 [as string2 ] [user string3]
disconnect default | current | all | string
set connection default | string
禁止用户访问:修改用户密码、从数据库删除用户账户、撤销分配给用户的相应权限。有些时候删除用户:drop user user_id [cascade];
管理数据库安全:
用户管理就是创建用户账户、删除用户账户、跟踪用户账户在数据库的行为的过程。用户的权限通过GRANT分配,通过REVLKE命令撤销,分为系统权限和对象权限。
系统权限:创建、删除数据库,创建、删除用户账户,创建、删除、修改数据库对象,创建、删除、修改数据库的状态以及其他会对数据库造成重要影响的操作。不同的数据库的常见的系统权限是不同的,见《SQL入门经典》第四版,page 221。
对象权限:ANSI标准,usage,select,insert,update,reference。
控制用户访问:grant privalege1 [, privalege2 ……] [on object ] to username [with grant option| admin option];
revoke privalege1 [ , privalege2……] [grant option for ] on object from user {restrict | cascade};
如果需要,可以控制对单独字段的访问。数据库账户PUBLIC : GRANT PRIVALEGE ON COLUMN OR OTHERS TO PUBLIC。
权限组:能更方便的给用户授予和撤销权限。包含connect、 resource、 dba。权限组授予用户的范例:GRANT DBA TO USER1。
通过角色控制权限:其在创建时没有任何实际的价值,可以被指派给用户或者其他的角色。create/drop/set role role_name。向角色授予权限和向用户授予权限是一样的。
创建和使用视图及其异名:
视图其实就是一个用来预查询的表。可以包含表的全部或者部分记录,可以由一个或者多个表创建。它不占用物理空间。使用视图可以简化数据访问、可以作为一种安全形式、维护摘要数据等等。
创建视图:create [ recursive ] view view_name [column_name [ , column_name ] ] [of udt name [under table_name ] [ ref if column_name system genetated | user generrated derived ] [ column_name with options scope table_name ] ] as { select statement } [ with [cascade | local ] check option ];
从表创建视图: create view view_name as select * | column1 [,column2] from table_name where expression1 [ , expression2 ]
[with check option ] [group by ] ;
从多个表创建视图: create view view_name as
select * | column1 [, column2 ]
from table_name1 [ , table_name2 ] [ , table _name 3 ]
where table_name1 = table_name2
[and table_name1 = table_name3]
[expression1 ] [ , expression2]
[with check option ] [ group by ] 。
从视图创建视图: create view from view_name ; 从上一级视图创建的视图,在上级视图被删除的情况下是不可用的。
with check option :目的在于确保insert 和update 语句满足条件。with check option本身有两个选项:cascaded (涉及到检查底层)和 local 。
通过视图更新数据:在一定的条件下,视图底层的数据可以更新。视图不包含结合、GROUP BY 语句、不包含union语句、不包含ROWNUM的任何字段的应用、视图不包含任何组函数、不能使用dinstinct 语句,注意where嵌套子句的引用。在视图里插入记录,删除记录需要注意,语法和操作表的语法基本一致。
从视图创建表;create table table_name as
select { * | column1 ,column2 …… }
from view_name
[where condition1 [ , condition2 ] ]
[ order by ] ; 注意视图与ORDER BY 语句的混合使用。见page 238.
删除视图; drop view names.
关于异名:异名是表或者视图的别名。 由DBA或个人用户管理。
创建异名:create synonym cust for customer_tbl ; 删除异名: drop synonym cust。
使用系统目录(表和视图的集合,注意其创建) ;
一般包含用户账户和默认设置、权限和其他安全信息、性能统计、对象大小估计、对象变化、表结构和存储、数据库其他信息、用户会话、审计信息、内部数据库设计、数据库文件的设置。
查询系统目录:select * from systables
go.