定義一個數據庫用戶
盡管從一個門外漢直觀的角度來看用戶的概念是非常簡單的但在各種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
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/SQL/201311/16443.html