首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录仅是db_datareader和公共角色的成员,但不是只读的。

登录仅是db_datareader和公共角色的成员,但不是只读的。
EN

Database Administration用户
提问于 2016-03-16 00:56:03
回答 1查看 2.9K关注 0票数 0

我是一个偶然的DBA在一个小公司,没有一个专门的DBA。

我需要为Server 2008数据库设置一个只读登录/用户,使用Server身份验证,高级用户可以使用它来运行一些临时查询/报告。

我发现了许多关于设置只读用户的文章和文章,例如:

如何授予用户对所有数据库的只读访问权限

https://www.itsupportguides.com/server-side-tips/sql-management-studio-how-to-create-read-only-users/

http://www.joellipman.com/articles/microsoft/sql-server/create-read-only-database-user-in-sql-server.html

我试着遵循这些指南,并确保所讨论的登录名仅是db_datareaderpublic角色的成员,但是当我以“只读”用户身份登录时,我仍然可以对数据进行更改。

例如,我可以在SSMS中运行这个查询。

代码语言:javascript
复制
UPDATE [dbo].[SoftwareRunLogs]
SET [RunDateTime] = '2010-10-29 13:31:06.133'
WHERE ID = 1

并更新表中的行:

代码语言:javascript
复制
(1 row(s) affected)

我预计这样的查询会失败。

当我尝试运行CREATE TABLE语句时,它会失败,而消息CREATE TABLE permission denied in database ...也会失败--我希望UPDATEINSERTDELETE语句会以类似的方式失败,但不会发生。

也许我无意中给了那个用户写权限,但是我不知道如何检查和查看。我一定错过了一些琐碎的东西。

有什么想法吗?

有一个名为ReadOnlyUser的服务器登录,下面是它的属性:

在数据库中,有一个名为ReadOnlyUser的用户,下面是它的属性:

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-03-16 03:42:02

我查看了SSMS中Security节点中的所有项,似乎public数据库角色的属性已经发生了某种改变。他们看起来是这样的:

我真的不知道它们通常应该是什么样子,但是清除DeleteInsertUpdate复选框似乎就能做到这一点。

眼前的问题现在已经解决了,我将阅读更多关于public角色以及它应该具有哪些设置的内容。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/132339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档