我有一个SQL服务器数据库,很快就会有两个数据库,我用它来建立一个网站。
我已经拥有一个只读数据库1的用户帐户来搜索我们的产品库存。我只想为数据库2创建一个单独的帐户,仅用于表1,它只允许插入记录(不更新或删除或其他任何内容)。我试图尽可能多地使用访问限制(在代码之上尝试并阻止sql注入,如果有人以某种方式获得某些东西,我不希望数据库本身允许它。)
所以底线问题,如何在SQL服务器中创建一个用户,该用户只能限制访问y数据库中的x表,并且只能读取/插入记录,而不是其他内容?
答案 0 :(得分:28)
创建用户,不要给出db_datareader或db_datawriter等任何角色
然后GRANT INSERT ON YourTable TO SomeUser
如果您想要插入并选择
GRANT INSERT, SELECT ON YourTable TO SomeUser
此处还可以看到一个完整的示例:Giving only insert permissions to a table for a new login
答案 1 :(得分:5)
(1)为用户提供仅限一个表的访问权限
GRANT SELECT ON [schemaName].[tableName] to [username]
Go
(2)授予INSERT
权限。
GRANT INSERT ON [schemaName].[tableName] TO [username]
答案 2 :(得分:1)
在dbname.dbo.tablename
上选择授予用户名
它给出了这个错误:
找不到对象'APP_TBL_Log',因为它不存在或您没有权限。
我以“ sa”身份登录
答案 3 :(得分:0)
授予访问单个表格的语法:
GRANT access_type ON table_name TO [user name]
撤销单个表格访问权限的语法:
REVOKE access_type ON table_name FROM [user name]
其中access_type可以是SELECT,INSERT,DELETE ......