【问题标题】:create user for sql server为sql server创建用户
【发布时间】:2013-02-21 13:32:00
【问题描述】:

下面的代码允许我通过使用查询在 sql server 中创建用户。它当前创建一个用户配置文件,但它允许用户访问服务器上的所有数据库。我只希望他们能够访问“TEST”数据库我将如何去做这个

CREATE LOGIN [SupportUser]
WITH PASSWORD=N'SupportUser',
DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO

【问题讨论】:

  • 你需要用sql命令行来做吗?如果不只是使用可以设置用户角色的管理工作室。
  • 我已经在设置角色,但只希望用户访问那个数据库
  • 我认为如果您希望该用户只能访问 TEST 数据库,那么 DEFAULT_DATABASE 也应该是 TEST 而不是 MASTER。
  • 您的脚本创建的是登录名,而不是用户,除非您将其添加到sysadmin 角色或其他服务器角色,否则默认情况下它无法访问任何用户数据库。所以我认为您的问题实际上是“我如何授予对特定数据库的登录访问权限”?见this question

标签: sql sql-server


【解决方案1】:
CREATE LOGIN [SupportUser] WITH PASSWORD=N'SupportUser', DEFAULT_DATABASE=[MASTER], 
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [TEST]
GO
CREATE USER [SupportUser] FOR LOGIN [SupportUser]
GO
USE [TEST]
GO
EXEC sp_addrolemember N'db_datareader', N'SupportUser'
GO
USE [TEST]
GO
EXEC sp_addrolemember N'db_datawriter', N'SupportUser'
GO
USE [TEST]
GO
EXEC sp_addrolemember N'db_ddladmin', N'SupportUser'
GO

【讨论】:

  • 当你使用这个时,这个使用会得到什么模式?默认 dbo。 ?
  • 是的。由于问题没有提到需要什么级别的数据库访问权限的细节,我假设用户将具有读取、写入和执行权限。
【解决方案2】:

试试这个。

CREATE LOGIN [SupportUser] 
WITH PASSWORD=N'SupportUser', 
DEFAULT_DATABASE=[master], 
CHECK_EXPIRATION=OFF, 
CHECK_POLICY=OFF
GO
USE [TEST]
GO
CREATE USER [SupportUser] FOR LOGIN [SupportUser]
GO
use [TEST]
GO
GRANT SELECT ON [dbo].[myView] TO [SupportUser]
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多