當前位置:首頁 » 編程語言 » sql賦權語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql賦權語句

發布時間: 2022-11-05 12:20:58

Ⅰ db2不同表空間 賦權語句

首先在windows安裝完DB2以後,打開DB2的命令行,然後依次執行下面代碼.
db2 "CREATE DB TestDB using codeset UTF-8 territory us"
db2 "UPDATE DB CFG FOR TestDB USING applheapsz 4096"
db2 "UPDATE DB CFG FOR TestDB USING app_ctl_heap_sz 1024"
db2 "UPDATE DB CFG FOR TestDB USING stmtheap 8192"
db2 "UPDATE DB CFG FOR TestDB USING dbheap 2400"
db2 "UPDATE DB CFG FOR TestDB USING locklist 1000"
db2 "UPDATE DB CFG FOR TestDB USING logfilsiz 1000"
db2 "UPDATE DB CFG FOR TestDB USING logprimary 12"
db2 "UPDATE DB CFG FOR TestDB USING logsecond 20"
db2 "UPDATE DB CFG FOR TestDB USING logbufsz 32"
db2 "UPDATE DB CFG FOR TestDB USING avg_appls 5"
db2 "UPDATE DB CFG FOR TestDB USING locktimeout 30"
db2 CONNECT TO TestDB
db2 "CREATE BUFFERPOOL icmsbuffer SIZE 1000 PAGESIZE 32K"
db2 "CREATE TABLESPACE icmsspace PAGESIZE 32K MANAGED BY SYSTEM USING ('D:\db2admin\sqlt0003.0') BUFFERPOOL icmsbuffer"(根據實際情況確定是否是D盤下的db2admin\sqlt0003.0目錄,如果沒有,請先創建)
db2 "CREATE SYSTEM TEMPORARY TABLESPACE ICMSBUF PAGESIZE 32 K MANAGED BY SYSTEM USING ('D:\db2admin\sqlt0004.0') BUFFERPOOL ICMSBUFFER"(根據實際情況確定是否是D盤下的db2admin\ sqlt0004.0目錄,如果沒有,請先創建)
db2 "DISCONNECT icms"
db2 "TERMINATE"

Ⅱ 請用SQL的GRANT 和REVOKE語句(加上視圖機制)完成以下授權定義或存取控制功能:

如何讓資料庫的用戶,只能 SELECT 到自己 INSERT 的數據。如何讓資料庫的用戶,只能看到自己創建的數據。

--創建測試表
-- 3個欄位,1自增主鍵,1數據,1所有者。
CREATE TABLE B (
ID INT identity(1, 1) PRIMARY KEY,
DATA VARCHAR(10),
OWNER VARCHAR(20)
);
go

-- 視圖,隱藏所有者這一列
-- 並強制只能檢索 所有者 = 當前登錄用戶
CREATE VIEW VB AS
SELECT
ID, DATA
FROM
B
WHERE
OWNER = user;
go

-- 首先插入3條數據,模擬用戶 A,B,C
INSERT INTO B
SELECT 'A', 'A' UNION ALL
SELECT 'B', 'B' UNION ALL
SELECT 'C', 'C'
go

--然後 創建觸發器,確保插入數據的時候,OWNER = 當前登錄用戶.
CREATE TRIGGER BeforeInsertB
ON B
FOR INSERT
AS
BEGIN
UPDATE
B
SET
Owner = user
FROM
B JOIN INSERTED ON (B.id = INSERTED.ID);
END
go

-- 開始模擬自己的插入
INSERT INTO VB VALUES( 'Me' );
GO
-- 嘗試檢索
SELECT * FROM VB
GO
ID DATA
----------- ----------
4 Me
(1 行受影響)
只看到自己插入的數據。

-- 下面去 創建 A , B 用戶。
CREATE LOGIN A
WITH PASSWORD='A',
DEFAULT_DATABASE=[Test],
DEFAULT_LANGUAGE=[簡體中文],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF;
CREATE LOGIN B
WITH PASSWORD='B',
DEFAULT_DATABASE=[Test],
DEFAULT_LANGUAGE=[簡體中文],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF;
CREATE USER [A]
FOR LOGIN [A];
CREATE USER [B]
FOR LOGIN [B];

-- 對 A,B 用戶進行 VIEW 的授權,
GRANT
INSERT, SELECT, UPDATE
ON [Test].[dbo].[VB]
TO A;
GRANT
INSERT, SELECT, UPDATE
ON [Test].[dbo].[VB]
TO B;
GO

-- 分別以 A 用戶 和 B 用戶進行登錄,並查詢。
E:\>sqlcmd -S "localhost\SQLEXPRESS" -U A -P A
1> use test
2> select * from vb
3> go
已將資料庫上下文更改為 'test'。
ID DATA
----------- ----------
1 A
(1 行受影響)
1> select * from B
2> go
消息 229,級別 14,狀態 5,伺服器 HOME-BED592453C\SQLEXPRESS,第 1 行
拒絕了對對象 'B' (資料庫 'test',架構 'dbo')的 SELECT 許可權。

E:\>sqlcmd -S "localhost\SQLEXPRESS" -U B -P B
1> use test
2> go
已將資料庫上下文更改為 'test'。
1> select * from vb
2> go
ID DATA
----------- ----------
2 B
(1 行受影響)
1> select * from B
2> go
消息 229,級別 14,狀態 5,伺服器 HOME-BED592453C\SQLEXPRESS,第 1 行
拒絕了對對象 'B' (資料庫 'test',架構 'dbo')的 SELECT 許可權。
1> INSERT INTO vb VALUES ('B Only');
2> go
(1 行受影響)
1> select * FROM VB;
2> go
ID DATA
----------- ----------
2 B
5 B Only
(2 行受影響)

結果顯示,A,B用戶登錄以後,只能看到 Owner = 自己的數據。
因為只有對 View 有許可權,對原始的表沒有許可權,因此看不到別人的數據。

Ⅲ sql的grant語句用法

GRANT
名稱
GRANT — 賦予一個用戶,一個組或所有用戶訪問許可權
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }

輸入
privilege
可能的許可權有:

SELECT
訪問聲明的表/視圖的所有列/欄位.
INSERT
向聲明的表中插入所有列欄位.
UPDATE
更新聲明的所有列/欄位.
DELETE
從聲明的表中刪除所有行.
RULE
在表/視圖上定義規則 (參見 CREATE RULE 語句).
ALL
賦予所有許可權.
object
賦予許可權的對象名.可能的對象是:
table (表)
view (視圖)
sequence (序列)
index (索引)
PUBLIC
代表是所有用戶的簡寫.
GROUP group
將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式創建的.
username
將要賦予許可權的用戶名.PUBLIC 是代表所有用戶的簡寫.
輸出
CHANGE
如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所聲明的對象不可用或不可能對聲明的組或用戶賦予許可權.
描述
GRANT 允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的許可權.對象創建後,除了創建者外,除非創建者賦予(GRANT)許可權,其他人沒有訪問對象的許可權.
一旦用戶有某對象的許可權,他就可以使用那個特權.不需要給創建者賦予(GRANT)對象的許可權,創建者自動擁有對象的所有許可權,包括刪除它的許可權.
注意
目前,要想在 Postgres 裡面只賦予幾列許可權,你必須創建一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。
使用 psql \z 命令獲取關於現存對象許可權的更多信息:
Database = lusitania
+------------------+---------------------------------------------+
| Relation | Grant/Revoke Permissions |
+------------------+---------------------------------------------+
| mytable | {"=rw","miriam=arwR","group todos=rw"} |
+------------------+---------------------------------------------+
Legend:
uname=arwR -- privileges granted to a user
group gname=arwR -- privileges granted to a GROUP
=arwR -- privileges granted to PUBLIC
r -- SELECT
w -- UPDATE/DELETE
a -- INSERT
R -- RULE
arwR -- ALL

小技巧: 目前,要創建一個 GROUP (組), 你將不得不手工向表 pg_group 中插入數據,像:
INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;

參考 REVOKE 語句重新分配訪問許可權.
用法
給所有用戶向表 films 插入記錄的許可權:
GRANT INSERT ON films TO PUBLIC;

賦予用戶 manuel 操作視圖 kinds 的所有許可權:
GRANT ALL ON kinds TO manuel;

兼容性
SQL92
SQL92 GRANT 語法允許對表中的某單獨列/欄位設置許可權,並且允許設置一許可權以賦予別人相同許可權.
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]

這些欄位與 Postgres 實現是兼容的,除了下面一些例外:
privilege
SQL92 允許聲明附加的許可權:
SELECT

REFERENCES
允許在一個聲明的表的整合約束中使用某些或全部列/欄位.
USAGE
允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE.
object
[ TABLE ] table
SQL92 允許一個附加的非函數關鍵字 TABLE.
CHARACTER SET
允許使用聲明的字元集.
COLLATION
允許使用聲明的集合序列.
TRANSLATION
允許使用聲明的字元集轉換.
DOMAIN
允許使用聲明的域.
WITH GRANT OPTION
允許向別人賦予同樣許可權.

Ⅳ 在sql server 怎麼只建立一個資料庫然後讓多個用戶在這個庫中管理各自的數據

在資料庫的"安全性"->"登錄名"裡面設置用戶名,然後給每個用戶名賦權.
例:你建立了三個用戶A,B,C,他們分別需要管理資料庫DB里table1,table2和table3這3張表.首先將A,B,C賦予對DB的public角色.然後根據各自需要管理的表賦權,比如用戶A對table1有刪除的許可權,就執行SQL語句:use DB grant delete on table1 to A.比如B對table2有修改許可權,就執行SQL語句:use DB grant update on table2 to B
想給誰賦什麼樣的許可權都可以

Ⅳ SQL Server怎麼設置表的許可權.

首先,你在建表的時候是有owner的,你就要設置這個owner的許可權。

展開資料庫節點-用戶-用戶名上右鍵看屬性-常規-許可權。

此時顯示目前資料庫中所有表:綠色的對勾就是允許操作。

如果不允許修改,點擊「列」這個按鈕。在彈出窗口中,吧所有列的UPDATE 上點成紅叉子。

Ⅵ 在sql server 怎麼只建立一個資料庫然後讓多個用戶在這個庫中管理各自的數據

在資料庫的"安全性"->"登錄名"裡面設置用戶名,然後給每個用戶名賦權.
例:你建立了三個用戶A,B,C,他們分別需要管理資料庫DB里table1,table2和table3這3張表.首先將A,B,C賦予對DB的public角色.然後根據各自需要管理的表賦權,比如用戶A對table1有刪除的許可權,就執行SQL語句:use
DB
grant
delete
on
table1
to
A.比如B對table2有修改許可權,就執行SQL語句:use
DB
grant
update
on
table2
to
B
想給誰賦什麼樣的許可權都可以

Ⅶ SQLServer中怎麼設定用戶對某張表的許可權

有Management Studio中的表上右鍵選屬性(Properties),左邊選許可權(Permissions),右邊中間添加和選中某個User或Role,下面選中或移除某個許可權。同樣你可用標準的賦權語句來實現:如
grant/revoke select on 表名 to 用戶名;

Ⅷ 關於SQL SERVER 表授權問題!

這就要看你是用什麼用戶登錄資料庫的,如果你用的SSS用戶登錄的,那麼你的賦權語句沒有問題;如果你用的是你後建立的用戶「王明」,那麼你的賦權語句執行不成功,因為你的表:職工,是掛在SSS用戶下,所以無法在王明用戶對其進行賦權

Ⅸ SQLServer中怎麼設定用戶對某張表的許可權

方法一、由Management
Studio中的表上右鍵選屬性(Properties),左邊選許可權(Permissions),右邊中間添加和選中某個User或Role,下面選中或移除某個許可權。
方法二、語句

Grant
許可權
On
table
表名
To
用戶名

Ⅹ 下述哪一個SQL語句用於實現數據存取的安全機制

C.GRANT
[解析]GRANT是賦權命令,與安全相關。