Informix的用户权限管理完全版

2024-06-23 08:48

本文主要是介绍Informix的用户权限管理完全版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有关数据库的权限

  存储在数据库中的数据对于一个商务活动来说是非常重要的。不仅要通过备份和制作日志来确保数据的不丢失,还要通过设置不同的访问权限来防止来自用户的善意的或恶意的破坏。一个公司不可能总是使用一个完全独立的数据库系统来保存雇员的工资信息。工资信息可能是和是保存在通常的数据库中,这样你就不必两台机器和两个数据库服务软件包。即使你在一台服务中使用了两个完全独立的数据库,针对每个用户确定其访问数据库、数据表及数据字段的权限还是非常必要的。

  而目前众多的数据库管理系统总是更习惯于将用户权限的管理完全交给 Application来完成。而真正操作数据库的往往是诸如DBA这样的拥有终极权限的数据库用户。我不能说这样的系统就一定会出安全性问题,不过至少这种做法会带来有关安全性的隐患。对于数据库用户权限的设置,绝大多数成熟的数据库都提供了一种大同小异的做法。我们这里以Informix为例,仅仅是因为我在使用Informix时发现网上对于Informix的用户权限设置缺少详实的资料。希望这份文件能对Informix的应用者有所帮助(尽管目前Informix的市场占有率是出奇的低。)

  有关我们的系统

  我们使用的数据库数据服务器上的操作系统是SCO UNIX 5.05,数据库选用Informix 7.3。由于选用操作系统和数据库的不同,以下的操作可能会用细微的差别。

  创建新用户

  在我们使用的平台上,Informix的数据库用户对应于UNIX的系统用户,因此创建新用户的过程也就是创建UNIX系统用户的过程,我们能用root登录后使用如下命令创建三个新的用户:

  #useradd mydba

  #useradd myuser1

  #useradd myuser2

  然后使用passwd给这三个用户设置相应的口令,我们能看到由于我们的useradd命令没有采用完整的格式,因此这三个用户并不能真正用来登录到我们的UNIX主机,而只能作为数据库用户来使用。

  数据库级别的用户权限

  对于所有的有权使用(这里的有权使用可能意味着该用户只能浏览该数据库中某一数据表的某一字段)该数据库的数据库用户都必须赋予其数据库级别的用户权限。在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,这将意味着赋予所有用户某种权限,当然,这种做法也许并不可取。

  用户数据库级别权限的解除

  解除用户相应的数据库级别的权限的格式是:

  REVOKE 权限 FROM 用户名[,用户名]

  对于拥有DBA、RESOURCE权限的用户,解除其相应的DBA、RESOURCE权限将自动将其降格为CONNECT权限。

  而对于只拥有CONNECT权限的用户,解除其CONNECT权限实际上也就意味着删除该数据库用户。

  示例:

  REVOKE DBA FROM mydba;/*将mydba降格为CONNECT权限*/

  REVOKE CONNECT FROM myuser1;/*解除myuser1对该数据库的访问权限*/

  表级别和字段级别的权限

  当一个用户访问数据库时,DBA能限制其对指定表和表中指定字段的访问。所有resource级别或DBA级别的用户都能创建表。表的拥有者或所有 DBA级别的用户都能对其他用户赋予或解除针对该数据表的表级别和字段级别的权限。这样的权限共有八种:insert、delete、select、 update、references、index、alter和all。

  Insert

  该权限表示用户能向表中增添新的数据。

  Delete

  该权限表示用户能删除表中的数据。

  Select

  该权限能扩展到指定字段,表示用户能查询表中的记录或指定字段。

  Update

  该权限能扩展到指定字段,表示用户能修改表中的记录或指定字段。

  References

  该权限能扩展到指定字段,表示用户能针对表中的记录或指定字段制定参考性约束条件。参考性约束条件用来执行诸如多级删除和字段之间关联的工作。赋予该权限的用户应该首先至少是resource级别的用户。

  Index

  该权限表示用户能建立或删除和表有关的索引。赋予该权限的用户应该首先至少是resource级别的用户。一个connect级别的用户即使被赋予该权限也不能建立索引。该权限不能扩展到指定字段,这是因为索引是建立在表的所有行的基础上的。

  Alter

  该权限表示用户能改动表的结构。所谓改动表的结构是指增加、删除和改动字段或改动字段的数据类型。该权限只能针对数据表。一般来说,只有对于具有数据库系统知识并知道怎么保护数据库系统的人,我们才会赋予此项权限。

  All

  该权限包含上面的所有七种权限。

  创建新表

  使用mydba登录到数据库,并使用如下语句创建一个新的数据表:

  CREATE TABLE customer_table (

  customer_id char(2) not null,

  balance decimal(16, 2) not null,

  primary key(customer_id));

  在创建新表后,系统将对public赋予该表All的权限。也就是说所有能访问该数据库的用户都能对该表执行select、insert、update和delete语句,这显然不是我们想要看到的。

  用户表级别和字段级别权限的解除

  解除用户相应的数据库级别的权限的格式是:

  REVOKE 权限[,权限] [(字段名[,字段名])] ON 表名 FROM 用户名[,用户名]

  我们首先需要解除public在该表上的All权限:

  REVOKE ALL ON customer_table FROM PUBLIC;

  其他示例:

  REVOKE INSERT ON customer_table FROM PUBLIC;/*解除所有用户对该表的INSERT权限*/

  REVOKE SELECT ON customer_table FROM myuser1;/*解除myuser1对该表的SELECT权限*/

  REVOKE UPDATE (customer_id, balance)

  ON customer_table FROM myuser1;/*解除myuser1对该表中customer_id, balance字段的UPDATE权限*/

  用户表级别和字段级别权限的赋予

  赋予用户相应的数据库级别的权限的格式是:

  GRANT 权限[,权限] [(字段名[,字段名])] ON 表名 TO 用户名[,用户名]

  我们赋予myuser1以更改该表中balance字段的权限:

  GRANT UPDATE (balance) ON customer_table TO myuser1;

  赋予myuser2以浏览该表的权限:

  GRANT SELECT ON customer_table TO myuser2;

  多种权限的同时赋予和解除

  从上面的REVOKE和GRANT的格式,我们可看到,其实我们能使用一条命令同时针对某一用户赋予或解除多种表级别或字段级别的权限。例如:

  GRANT INSERT, DELETE, UPDATE ON customer_table TO PUBLIC;/*同时赋予所有用户对该表的INSERT、DELETE和UPDATE权限*/

  GRANT SELECT, UPDATE (balance)

  ON customer_table TO myuser2;/*同时赋予myuser2对该表中balance字段的SELECT和UPDATE权限*/

  REVOKE INDEX, ALTER ON customer_table FROM myuser1;/*同时解除myuser1对该表的INDEX和ALTER权限*/

  你也能在一条语句中同时针对某一用户赋予或解除表级别和字段级别的权限,这时字段级别的权限使用指定的字段,而表级别的权限使用指定的数据表。例如:

  GRANT INSERT, DELETE, SELECT, UPDATE (balance) ON customer_table TO myuser2;

  /*同时赋予myuser2对该表的INSERT、DELETE权限及对字段balance的SELECT和UPDATE权限*/

  REVOKE INDEX, SELECT, ALTER (balance) ON customer_table FROM myuser1;

  /*同时赋予myuser1对该表的INDEX、ALTER权 

这篇关于Informix的用户权限管理完全版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086688

相关文章

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同