数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL实战新手入门:定义一个数据库用户


发布日期:2019年04月14日
 
SQL实战新手入门:定义一个数据库用户

定义一个数据库用户

尽管从一个门外汉直观的角度来看用户的概念是非常简单的但在各种RDBMS的实现中它却是最混淆的概念之一SQL标准并没有定义任何特定的语法(甚至连办法也未声明)用于创建数据库中的用户这被留给数据库厂商自行实现而数据库厂商已经创建了一些独创的解决方案例如在Oracle g中用户和数据库模式之间只有很小的区别它既允许RDBMS的密码也允许使用操作系统的账户进行验证IDB DB LUW仅使用操作系统定义的用户(或者通过某种外部安全框架定义的用户)Microsoft SQL Server结合了这两种方法可以使用Windows账户和特殊的系统过程来添加数据库的用户PostgreSQL和MySQL则喜欢创建由数据库直接验证的用户(PostgreSQL还提供了对基于操作系统/网络的身份验证的支持)

还有其他身份验证方法包括LDAP和Kerberos协议这些方法都是为基于网络的身份验证准备的它们超出了本书的内容范围

Microsoft SQL Server对LOGIN和USER进行了区分LOGIN用于身份验证(登录到数据库)而USER用于授权(为数据库对象分配特权)

用户可以是在数据库级别定义的一个RDBMS用户一个操作系统用户一个角色或一个应用程序角色为了允许对安全性进行精细的控制数据库中的对象总是属于一个模式并被指定的用户拥有这同时也解决了通过授予或撤消特权的办法控制对数据库对象进行访问的问题

根据定义数据库用户就是RDBMS服务器所提供服务的使用者它可以是一个应用程序一个数据库管理员或者仅仅是一个在指定时间内恰好访问数据库的人为了减轻管理上的负担通常将用户指定到某些用户组或角色对一个角色授予或撤消某种特权将立即对属于该角色的所有用户生效

对于安全问题对用户进行身份验证是第一道防线在几乎所有RDBMS中创建用户的基本语法都是类似的(只需要少许改变)

CREATE USER LibraryUser

IDENTIFIED BY letmein;

在Oracle和DB在创建用户时使用类似的语法将使很多选项设置为默认值这勉强可以为数据库的安全提供一点保证MySQL要求将用户绑定到数据库的IP地址(默认用户为LibraryUser@localhost)PostgreSQL则使用WITH PASSWORD letmein来创建用户

Microsoft Access也允许使用与之类似的SQL语句来创建用户OpenOffice BASE以及嵌入的HSQLDB数据库并不支持这种功能

Microsoft SQL Server 创建用户的语法与之不同它要求首先创建LOGIN下面就是在Microsoft SQL Server 中创建 LOGIN和USER的最基本的语法

CREATE LOGIN libUsers WITH PASSWORD letmein;

GO;

CREATE USER LibraryUser FOR LOGIN libUsers

GO;

在每一种RDBMS中创建用户的语法都还有很多的选项选择使用正确的选项要求对业务领域和安全问题都有着深入的理解因此创建用户等级的工作最好由数据库管理员来完成

在创建了用户之后还可以修改(ALTER)或删除(DROP)用户对于所有RDBMS修改或删除用户的基本语法几乎都是相同的但ALTER的语法差别略大一点

DROP USER LibraryUser;

Oracle在DROP USER语法中具有一个附加的子句CASCADE它指定在删除用户之前先删除该用户模式中的所有对象除非指定了该子句否则只要用户模式中包含了任何对象Oracle将不允许删除该用户

ALTER USER语句可以指定对用户的很多修改但由于一种RDBMS与另外一种RDBMS的修改存在差异因此没有单一的语法可适用于所有的RDBMSMySQL不支持ALTER关键字而Oracle的ALTER USER语法则具有数十个有用的选项Microsoft SQL Server先修改LOGIN然后再修改USERDB在修改用户的同时修改相应的可选参数集因此尽管都是SQL语句但ALTER USER语句是非常方言化的并且它要求对特定的RDBMS具有较深入的知识

IBM DB LUW结合了外部安全服务和内部访问控制IBM DB并未提供身份验证服务它依赖于外部服务这意味着除非用户已经具有一个操作系统账户否则将无法创建用户这些操作系统包括WindowsUNIX或者任何其他操作系统因此所有的用户身份验证工作都是在DB数据库之外管理的Microsoft SQL Server 引入了CREATE USER语句以及ALTER USER和DROP USER语句它已经成为了标准的用户管理机制另外SQL Server还提供了通过系统存储过程来管理用户的机制这是从之前版本的SQLServer中继承而来的注意尽管目前仍然支持这些用户管理的存储过程但是在将来发布的Microsoft SQL Server版本中可能会弃用

返回目录SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

数据仓库与数据挖掘培训视频教程

上一篇:SQL实战新手入门:理解锁

下一篇:SQL实战新手入门:第十章小结