如何授予用户对 SQL Server 中数据库的读取权限?

Posted

技术标签:

【中文标题】如何授予用户对 SQL Server 中数据库的读取权限?【英文标题】:How do I grant read access for a user to a database in SQL Server? 【发布时间】:2011-10-05 01:21:36 【问题描述】:

我想授予用户对具有读写访问权限的特定数据库的访问权限。该用户已在域中可用,但在 DB 中不可用。

那么,如何通过创建新用户和密码来授予他们访问权限?

有人告诉我,只需指定要授予用户访问权限的用户、域和数据库即可完成,而无需创建新用户和密码。

这是我实施的旧方式。它可以工作,但它会创建一个新的登录名和用户,而不是使用域中可用的登录名和用户:

use DBName;
create login a_2 with password='Aa123';
create user a_2 for login a_2;
grant insert to a_2;
grant select to a_2;

【问题讨论】:

【参考方案1】:

这是一个两步过程:

    您需要为该用户创建一个登录到 SQL Server,基于其 Windows 帐户

    CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
    

    您需要授予此登录权限才能访问数据库:

    USE (your database)
    CREATE USER (username) FOR LOGIN (your login name)
    

一旦您在数据库中拥有该用户,您就可以赋予它任何您想要的权限,例如您可以为其分配db_datareader 数据库角色以读取所有表。

USE (your database)
EXEC sp_addrolemember 'db_datareader', '(your user name)'

【讨论】:

不幸的是,我不能 v=create 基于 Windows 帐户的登录。因为,该用户的帐户仅在域上可用,它在 Windows 帐户上不可用...所以,当我使用“来自 Windows”时,它说 -->“Windows NT 用户或组 'aa.us \bb' 未找到。再次检查名称。" !!!它看不到它...那么,有没有办法让它在域中而不是在 Windows 帐户中查找?注意:别担心,我写的是我自己的域名和登录名;)非常感谢;) 别介意'marc_s'...我解决了问题...我接缝我写错了域名,现在它可以工作了:)非常感谢;) 当我忘记“创建登录用户”时,我总是在这里结束!!;) +1

以上是关于如何授予用户对 SQL Server 中数据库的读取权限?的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 2008 权限

如何向 sql server 用户授予 sendmail 权限?

如何在使用 .NET 安装期间授予对文件夹的读/写权限

授予对数据库的 SQL Server 登录访问权限 - SQL Server

向 SQL Server 用户授予执行权限以仅运行特定作业

sql 权限授予 sql server