GRANT -- 定義訪問許可權
【語法】
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION funcname ([type, ...]) [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON LANGUAGE langname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
ON SCHEMA schemaname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { CREATE | ALL [ PRIVILEGES ] }
ON TABLESPACE tablespacename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
【例子】
把表 films 的插入許可權賦予所有用戶:
GRANT INSERT ON films TO PUBLIC;
賦予用戶manuel對視圖kinds的所有許可權:
GRANT ALL PRIVILEGES ON kinds TO manuel;
請注意,如果上面的命令由超級用戶或者 kinds 的所有者執行,那麼它實際上會賦予所有許可權, 如果由其他人執行,那麼它會賦予這個「其他人」擁有授權選項的所有許可權。
收回授權 搜索 Revoke!
❷ SQL中使用哪些語句實現許可權的授予和回收
1、把查詢STUDENT表的許可權授給用戶UI:
GRANT SELECT
ON TABLE student
TO UI;
GRANT SELECT
ON TABLE student
TO PUBLIC
WITH GRANT OPTION;
2、收回許可權:
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
資料庫角色是被命名的一組與資料庫操作相關的許可權,角色是許可權的集合。
CREATE ROLE jue;
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO RI;
GRANT RI TO 王平;
REVOKE RI FROM 王平;
(2)sql安全形色許可權擴展閱讀:
SQL Server用戶許可權包含了對象許可權和語句許可權這兩種類型。
用戶在登錄到SQL Server 之後,其安全賬號(用戶賬號)所歸屬的NT 組或角色所被授予的許可權決定了該用戶能夠對哪些資料庫對象執行哪種操作以及能夠訪問、修改哪些數據。在SQL Server 中包括兩種類型的許可權,即對象許可權和語句許可權。
❸ SQL 中角色許可權授予問題
語法:
sp_addrolemember[@rolename=]'role',
[@membername=]'security_account'
參數:[@rolename=]'role'
當前資料庫中SQLServer角色的名稱。role的數據類型為sysname,沒有默認值。
[@membername=]'security_account'
添加到角色的安全帳戶。security_account的數據類型為sysname,沒有默認值。security_account可以是所有有效的SQLServer用戶、SQLServer角色或是所有已授權訪問當前資料庫的MicrosoftWindowsNT®用戶或組。
❹ 怎麼設置SQL資料庫用戶許可權
--SQLServer:
一、操作步驟
首先進入資料庫級別的【安全性】-【登錄名】-【新建登錄名】
(圖11:其它對象類型)
❺ 如何為SQL Server中創建的角色分配許可權
--創建一個簡單的登錄,登錄名為:newlogin;登錄密碼:123456;默認資料庫:master,默認資料庫也可以不指定。
EXEC sp_addlogin 'newlogin','123456','master'
--創建用戶
--創建一個簡單的用戶,如果不指定用戶名,則添加到當前資料庫登錄名中,如果不指定角色,則該用戶默認屬於public角色。下為添加newlogin登錄名。
EXEC sp_adser 'newlogin'
--創建一個帶用戶名的用戶,用戶可以與登錄名相同(同上一種類似),也可以不同,但要設定當前登錄名,用戶角色可選,默認為public。下為將用戶newuser添加到newlogin登錄名中。
EXEC sp_adser 'newlogin','newuser'
--創建角色
EXEC sp_addrole 'newrole'
--下為將用戶下為將用戶newuser添加到newlogin登錄名中。並指定newrole角色。
EXEC sp_adser 'newlogin','newuser','newrole'
--為角色newrole賦予jobs表的所有許可權
GRANT ALL ON jobs TO newrole
--為角色newrole賦予sales表的查、改許可權
GRANT SELECT,UPDATE ON sales TO newrole
--禁止角色newrole使用employees表的插入許可權
DENY INSERT ON employees TO newrole
另一種創建用戶和賦予角色的方式
--為登錄newlogin在資料庫中添加安全賬戶newuser
EXEC sp_grantdbaccess 'newlogin','newuser'
--添加newuser為角色newrole的成員
EXEC sp_addrolemember 'newrole','newuser'
--資料庫用戶、角色、登錄的刪除操作
--刪除當前資料庫用戶
EXEC sp_revokedbaccess 'newuser';
--刪除資料庫登錄
EXEC sp_droplogin 'newlogin'
--刪除資料庫角色
EXEC sp_droprole 'newrole'
--從資料庫角色(newrole)中刪除用戶(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
--用SQL代碼新建登錄、用戶
--創建帶密碼的mylogin登錄名,MUST_CHANGE 選項需要用戶首次連接伺服器時更改此密碼。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
--創建映射到憑據的登錄名。
--以下示例將創建mylogin登錄名。此登錄名將映射到mycredential憑據。
CREATE LOGIN mylogin WITH PASSWORD = '123456',
CREDENTIAL = mycredential;
--從Windows 域帳戶創建登錄名
--如果從Windows 域帳戶映射登錄名,則登錄名必須用方括弧([ ]) 括起來。
CREATE LOGIN [jack\xiangzhao] FROM WINDOWS;
--如果指定用戶名,則不使用默認登錄名作為該資料庫用戶
CREATE USER myuser FOR LOGIN mylogin
--以下示例將創建用戶myuser擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
--以下示例將創建db_role固定資料庫角色擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION db_role❻ sql資料庫安全中的許可權問題
一般來說,系統的許可權和許可權之間是「或」的關系。即是,一個有,則有。
但是不知道你的具體是什麼資料庫,另外角色A和覺得B之間有沒有優先順序的關系。
但是這種許可權沖突的情況,建議樓主少用,因為本身從物理邏輯上這兩個角色就是矛盾的。而且不光對你自己、對其他組員也都不是一個美好的東西。❼ SQL sever中 什麼是許可權和角色,分別說出一下。
--什麼是角色?
例如,一個公司可能成立慈善活動委員會,其中包括來自不同部門,來自組織中各種不同級別的職員。這些職員需要訪問資料庫中特殊的項目表。沒有隻包括這些職員的現有 Windows NT 4.0 或 Windows 2000 組,而且沒有其它理由在 Windows NT 4.0 或 Windows 2000 中創建這樣一個組。可以為此項目創建一個自定義 SQL Server 資料庫角色 CharityEvent,並將個別的 Windows NT 和 Windows 2000 用戶添加到此資料庫角色。當應用許可權後,資料庫角色中的用戶便獲得對表的訪問許可權。其它資料庫活動的許可權不受影響,只有 CharityEvent 用戶可以使用該項目表。
SQL Server 角色存在於一個資料庫中,不能跨多個資料庫。
使用資料庫角色的好處包括:
1.對於任何用戶,都可以隨時讓多個資料庫角色處於活動狀態.如果所有用戶、組和角色都在當前資料庫中,則 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 組和用戶,以及 SQL Server用戶和其它角色。
2.在同一資料庫中,一個用戶可屬於多個角色。
3.提供了可伸縮模型以便在資料庫中設置正確的安全級別。
說明:資料庫角色要麼在創建角色時由明確指定為所有者的用戶所擁有,要麼在未指定所有者時為創建角色的用戶所擁有。角色的所有者決定可以在角色中添加或刪除誰。但是,因為角色不是資料庫對象,不能在同一資料庫中創建由不同用戶所擁有的多個同名角色。
許可權--
是指為了保證職責的有效履行,任職者必須具備的,對某事項進行決策的范圍和程度。它常常用「具有批准……事項的許可權」來進行表達。例如,具有批准預算外5000元以內的禮品費支出的許可權。❽ SQL資料庫的角色的定義,分類及角色的許可權分配操作
角色是一個強大的工具,使您得以將用戶集中到一個單元中,然後對該單元應用許可權。對一個角色授予、拒絕或廢除的許可權也適用於該角色的任何成員。可以建立一個角色來代表單位中一類工作人員所執行的工作,然後給這個角色授予適當的許可權。當工作人員開始工作時,只須將他們添加為該角色成員,當他們離開工作時,將他們從該角色中刪除。而不必在每個人接受或離開工作時,反復授予、拒絕和廢除其許可權。許可權在用戶成為角色成員時自動生效。
Microsoft® Windows NT® 和 Windows® 2000 組的使用方式與角色很相似。有關更多信息,請參見組。
如果根據工作職能定義了一系列角色,並給每個角色指派了適合這項工作的許可權,則很容易在資料庫中管理這些許可權。之後,不用管理各個用戶的許可權,而只須在角色之間移動用戶即可。如果工作職能發生改變,則只須更改一次角色的許可權,並使更改自動應用於角色的所有成員,操作比較容易。
在 Microsoft® SQL Server™ 2000 和 SQL Server 7.0 版中,用戶可屬於多個角色。
以下腳本說明登錄、用戶和角色的添加,並為角色授予許可權。
USE master
GO
sp_grantlogin 'NETDOMAIN\John'
GO
sp_defaultdb 'NETDOMAIN\John', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Sarah'
GO
sp_defaultdb 'NETDOMAIN\Sarah', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Betty'
GO
sp_defaultdb 'NETDOMAIN\Betty', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Ralph'
GO
sp_defaultdb 'NETDOMAIN\Ralph', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Diane'
GO
sp_defaultdb 'NETDOMAIN\Diane', 'courses'
GO
USE courses
GO
sp_grantdbaccess 'NETDOMAIN\John'
GO
sp_grantdbaccess 'NETDOMAIN\Sarah'
GO
sp_grantdbaccess 'NETDOMAIN\Betty'
GO
sp_grantdbaccess 'NETDOMAIN\Ralph'
GO
sp_grantdbaccess 'NETDOMAIN\Diane'
GO
sp_addrole 'Professor'
GO
sp_addrole 'Student'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\John'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Sarah'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Diane'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Betty'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Ralph'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Diane'
GO
GRANT SELECT ON StudentGradeView TO Student
GO
GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor
GO
該腳本給 John 和 Sarah 教授提供了更新學生成績的許可權,而學生 Betty 和 Ralph 只能選擇他們自己的成績。Diane 因同時教兩個班,所以添加到兩個角色中。ProfessorGradeView 視圖應將教授限制在自己班學生的行上,而 StudentGradeView 應限制學生只能選擇自己的成績。
SQL Server 2000 和 SQL Server 7.0 版在安裝過程中定義幾個固定角色。可以在這些角色中添加用戶以獲得相關的管理許可權。下面是伺服器范圍內的角色。
固定伺服器角色
描述
sysadmin
可以在 SQL Server 中執行任何活動。
serveradmin
可以設置伺服器范圍的配置選項,關閉伺服器。
setupadmin
可以管理鏈接伺服器和啟動過程。
securityadmin
可以管理登錄和 CREATE DATABASE 許可權,還可以讀取錯誤日誌和更改密碼。
processadmin
可以管理在 SQL Server 中運行的進程。
dbcreator
可以創建、更改和除去資料庫。
diskadmin
可以管理磁碟文件。
bulkadmin
可以執行 BULK INSERT 語句。
可以從 sp_helpsrvrole 獲得固定伺服器角色的列表,可以從 sp_srvrolepermission 獲得每個角色的特定許可權。
每個資料庫都有一系列固定資料庫角色。雖然每個資料庫中都存在名稱相同的角色,但各個角色的作用域只是在特定的資料庫內。例如,如果 Database1 和 Database2 中都有叫 UserX 的用戶 ID,將 Database1 中的 UserX 添加到 Database1 的 db_owner 固定資料庫角色中,對 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成員沒有任何影響。
固定資料庫角色
描述
db_owner
在資料庫中有全部許可權。
db_accessadmin
可以添加或刪除用戶 ID。
db_securityadmin
可以管理全部許可權、對象所有權、角色和角色成員資格。
db_ddladmin
可以發出 ALL DDL,但不能發出 GRANT、REVOKE 或 DENY 語句。
db_backupoperator
可以發出 DBCC、CHECKPOINT 和 BACKUP 語句。
db_datareader
可以選擇資料庫內任何用戶表中的所有數據。
db_datawriter
可以更改資料庫內任何用戶表中的所有數據。
db_denydatareader
不能選擇資料庫內任何用戶表中的任何數據。
db_denydatawriter
不能更改資料庫內任何用戶表中的任何數據。
可以從 sp_helpdbfixedrole 獲得固定資料庫角色的列表,可以從 sp_dbfixedrolepermission 獲得每個角色的特定許可權。
資料庫中的每個用戶都屬於 public 資料庫角色。如果想讓資料庫中的每個用戶都能有某個特定的許可權,則將該許可權指派給 public 角色。如果沒有給用戶專門授予對某個對象的許可權,他們就使用指派給 public 角色的許可權。❾ SQL2005中怎樣把使用一個角色的許可權授予給一個用戶
1. SQL資料庫分配許可權
打開SQL-Server管理工具安全性登陸名右鍵(新建登陸名)
輸入相應的信息(這里要去掉強制實施密碼策略,強制密碼過期,用戶在下次登錄時必須修改密碼的選擇)
用戶映射選擇我們要設置許可權的資料庫通過選擇資料庫角色成員身份來設置新建用戶的許可權
一般對整個庫做許可權的時候都是需要所有許可權勾選db_owner就可以了(確定)
這樣就可以用我們新建的這個用戶名來訪問我們的資料庫伺服器了,而且這個用戶名只擁有我們所勾選的資料庫的所有許可權。
2. SQL資料庫對每個表分配許可權
打開SQL-Server管理工具安全性登陸名右鍵(新建登陸名)
輸入相應的信息(這里要去掉強制實施密碼策略,強制密碼過期,用戶在下次登錄時必須修改密碼的選擇)
用戶映射選擇我們要設置許可權的資料庫通過選擇資料庫角色成員身份來設置新建用戶的許可權
因為我們要對每個表進行單獨的設置所以這里我們就不勾選db_owner了
打開我們剛才勾選的test資料庫安全性用戶中看到我們剛才新建的那個用戶了。
找到新建的用戶名右鍵屬性
安全對像
添加
特定類型的所有對象確定
對象類型選擇表
確定這樣我們就能看到test資料庫中的所有表了
接著我們再對每個表設置許可權
我對兩個表都是設置的Select許可權確定這樣我們用test_name登陸test資料庫的時候只能對其中的兩個表做Select操作不能做其它操作