当前位置:首页 » 编程语言 » 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是赋权命令,与安全相关。