对于所有的有权使用(这里的有权使用可能意味着该用户只能浏览该数据库中某一数据表的某一字段)该数据库的数据库用户都必须赋予其数据库级别的用户权限。在Informix中,数据库级别的用户权限有三种,按权限的大小依次是connect、resource和DBA。
Connect
这是级别最低的一种数据库级别的用户权限。拥有该权限的用户可以执行select、insert、update和delete语句,针对数据表执行存储过程,创建数据表的视图,创建临时表(这样的临时表可以有索引,也可以没有索引)。
Resource
拥有该权限的用户除拥有connect的全部权限以外,他还可以创建新的表,并可以对它自己所创建的表执行alter和drop操作,并可以对这些表创建索引。
DBA
数据库的建立者和拥有者被自动赋予这种权限。拥有该权限的用户除拥有resource的全部权限以外,他还可以对其他用户赋予或解除connect、resource和DBA权限,可以对其它用户创建的表的视图执行drop和alter操作。甚至他还可以对数据库执行drop、start、stop和recover操作。
新数据库的建立并为各用户赋予相应的数据库级别的权限
使用有权登录到UNIX主机的用户创建一个新的数据库(create database databasename命令)。如上所述,现在该用户将对新创建的databasename数据库拥有DBA的权限。连接到这个库后,采用GRANT命令可以对其它用户赋予相应的数据库级别的权限。(事实上这是一个真正意义上的超级用户,换言之也是最危险的用户,在我们下面赋予了mydba以该表的DBA权限以后,我们将不再使用这个用户)。
赋予用户相应的数据库级别的权限的格式是:
GRANT 权限 TO 用户名[,用户名]
于是,我们可以使用下面的三个命令给我们新创建的用户赋予相应的数据库级别的权限。
GRANT DBA TO mydba;/*赋予mydba以DBA的权限*/
GRANT CONNECT TO myuser1,myuser2;/*赋予myuser1,myuser2以CONNECT的权限*/
在这里,我们有必要介绍一个特殊的用户public,如果使用GRANT ... TO PUBLIC,这将意味着赋予所有用户某种权限,当然,这种做法也许并不可取。