13

我有一个 SQL 服务器数据库,很快就会有两个数据库,我将它们用于一个网站。

我已经有一个只读的数据库 1 的用户帐户来搜索我们的产品库存。我想只为数据库 2 创建一个单独的帐户,只为表 1 创建一个单独的帐户,它只允许插入记录(没有更新或删除或其他任何东西)。我试图通过访问限制尽可能地冗余(在代码之上尝试防止 sql 注入,如果有人以某种方式通过,我不希望数据库本身允许它)。

所以底线问题,我如何在 SQL 服务器中创建一个用户,该用户只能访问 y 数据库中的 x 表,并且只能读取/插入记录,而没有别的?

4

4 回答 4

31

创建用户,不要给任何角色,如 db_datareader 或 db_datawriter

然后GRANT INSERT ON YourTable TO SomeUser

如果你想插入并选择

GRANT INSERT, SELECT ON YourTable TO SomeUser

于 2013-03-04T14:45:39.670 回答
6

(1) 仅授予对一个表的有限访问权限的用户

GRANT SELECT ON [schemaName].[tableName] to [username]
Go 

(2) 授予INSERT许可。

GRANT INSERT ON [schemaName].[tableName] TO [username]
于 2013-03-04T14:48:15.877 回答
1

授予对单个表的访问权限的语法:

GRANT access_type ON table_name TO [user name]

撤销对单个表的访问的语法:

REVOKE access_type ON table_name FROM [user name]

其中 access_type 可以是 SELECT、INSERT、DELETE...

于 2016-06-04T19:24:52.137 回答
1

授予选择dbname.dbo.tablename用户名它给出此错误:

找不到对象“APP_TBL_Log”,因为它不存在或您没有权限。

我以“sa”身份登录

于 2019-12-10T09:03:58.273 回答