数据库特权:
CONNECT 允许用户连接数据库。
BINDADD 允许用户在数据库中创建新包。
CREATETAB 允许用户在数据库中创建新表。
CREATE_NOT_FENCED 允许用户创建非 fenced 用户定义的函数或存储过程。
IMPLICIT_SCHEMA 允许用户在尚不存在的模式中创建对象。
QUIESCE_CONNECT 允许用户在数据库停顿时访问数据库。
CREATE_EXTERNAL_ROUTINE 允许用户创建以 C 语言、Java? 语言、OLD 和 COBOL 编写的存储过程。
模式特权:
CREATEIN 允许用户在模式内创建对象。
ALTERIN 允许用户更改模式内的对象。
DROPIN 允许用户删除模式内的对象。
schema 是一些数据库对象的集合(包括table.view....)
schema可以在创建user之前创建(create schema schema_name),也可以在创建user的时候同时创建schema
schema的获得分两种,显示指定的和隐式获得的
显示的,即通过set schema指定的 set schema = schema_name
隐式的,即没有显示指定schema时,db2将依据当前创建者的user名作为schema。当使用当前用户登陆db的时候,schema会改为当前用户一致。在创建table的时候如果不指定其它的schema,则使用与当前用户名一致的schema。当使用当前的用户创建table时候,会自动在系统中生成一个与当然用户一致的schema。
试验一:
db2 => select * from SYSCAT.SCHEMAAUTH
GRANTOR
-------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- ----------- ------------ ----------
SYSIBM
SYSIBM
db2 =>
一个user:nianxbcreate db test
select * from sysibm.SYSSCHEMATA,没有名字为nianxb的schem
create table tab1 (id varchar
select * from sysibm.SYSSCHEMATA,生成一个名字为nianxb的schema
drop table tab1
select * from sysibm.SYSSCHEMATA,名字为nianxb的schema仍然存在
drop schema nianxb restrict
select * from sysibm.SYSSCHEMATA,名字为nianxb的schema不存在
实验二:
set schema=SQLJ
create table tab1 (id varchar
select * from sysibm.SYSSCHEMATA
实验三:
用户nianxb不属于db2 admin组
connect to test user db2inst1 using passw0rd
给nianxb赋创建table的权限
grant createtab on database to nianxb
db2 => select * from syscat.dbauth
GRANTOR
-------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------- --------- ------------------- -------------- -------- ----------- ------------------ -------------- ---------------
SYSIBM
SYSIBM
DB2INST1
no IMPLSCHEMAAUTH( 允许用户在尚不存在的模式中创建对象。设置为N)
disconnect current
connect to test user nianxb using nianxb
create table tab1 (id varchar
select * from sysibm.SYSSCHEMATA, 生成一个名字为nianxb的schema,(很奇怪)
如何知道SCHEMA的状况?
select * from sysibm.SYSSCHEMATA
|
|