在SQL Server 2005中创建新的db用户

时间:2009-03-20 16:09:49

标签: sql-server sql-server-2005 tsql sql

如何在sql server 2005中创建一个具有密码的新数据库用户?

我需要在连接字符串中使用此用户/密码,例如:

uid=*user*;pwd=*password*;

6 个答案:

答案 0 :(得分:16)

CREATE LOGIN [user] WITH PASSWORD='password', 
       DEFAULT_DATABASE=[your_db], CHECK_POLICY=OFF
GO

CREATE USER [user] FOR LOGIN [user]
EXEC sp_addrolemember N'db_datareader', N'your_db'
EXEC sp_addrolemember N'db_datawriter', N'your_db'
GO

CHECK_POLICY=OFF关闭密码复杂性检查等

答案 1 :(得分:6)

从SQL Server 2005开始,您基本上应该分两步创建用户:

  • 创建一个“登录”整个SQL Server
  • 在每个所需的数据库中为此登录创建用户

你会这样做:

CREATE LOGIN MyNewUser WITH PASSWORD = 'top$secret';

并“使用”您的数据库并为该登录创建用户:

USE AdventureWorks;
CREATE USER MyNewUser FOR LOGIN MyNewUser

答案 2 :(得分:2)

如上所述,使用CREATE LOGIN创建以该帐户身份连接到SQL Server的功能。然后在数据库中使用CREATE USER为该登录提供访问相关数据库的能力。

然而,基于其中一些评论的一些安全点:

  • 如果可能,您希望使用Windows身份验证,而不是基于SQL Server的登录(这是您以这种方式使用user / pwd时正在执行的操作)。如果从与SQL Server相同的域中的计算机运行,则可以使用作为Windows用户帐户的服务帐户。这可确保域是安全性的唯一来源。
  • 您没有说明用户需要哪些权利。尽可能避免使用db_datareader和db_datawriter角色。它们对表和视图提供 IMPLICIT 访问权限,如果有人对数据库执行快速权限检查,他们可能不会考虑检查这些角色的成员身份。这意味着您的安全报告正在使用。最佳实践是创建自己的数据库角色,为其分配权限,并使用户成为该角色的成员。
  • 尽可能使用强密码。一个示例关闭了密码策略。 SQL Server将使用本地服务器的密码策略(通常在域级别设置)。如果可能,您希望维护强密码策略。

答案 3 :(得分:1)

您必须先以用户身份创建它,然后为该用户设置正确的权限。

  1. 您必须确保您的数据库配置了用户身份验证和SQL身份验证 如果使用Management Studio:右键单击Server,选择“Security”,确保服务器身份验证为“SQL Server和Windows身份验证模式”

  2. 在Security-logins中,右键单击并选择“New Login”,选择SQL Authentication,使用您喜欢的用户名和密码。

    USE [master]
    GO
    CREATE LOGIN [ test] WITH PASSWORD=N'test', DEFAULT_DATABASE=[MY_DATABASE], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO 
    
  3. 在您想要的数据库上,在安全性,用户中,选择新用户。选择用户名,并附上您刚刚创建的登录名,然后选择要应用于此用户的角色(例如db_datareaderdb_datawriter):

    USE [MY_DATABASE]
    GO
    CREATE USER [myDefaultUser] FOR LOGIN [ test]
    GO
    USE [MY_DATABASE]
    GO
    EXEC sp_addrolemember N'db_datareader', N'myDefaultUser'
    GO
    USE [MY_DATABASE]
    GO
    EXEC sp_addrolemember N'db_datawriter', N'myDefaultUser'
    GO
    
  4. 就是这样。现在,您可以使用此密码创建连接字符串。

答案 4 :(得分:0)

CREATE LOGIN MyNewUser WITH PASSWORD = 'top$secret'

USE AdventureWorks 
CREATE USER MyNewUser FOR LOGIN MyNewUser 
GO

答案 5 :(得分:-1)

USE [MASTER]


EXEC master.dbo.sp_addlogin @loginame = N'USERNAME', @passwd = 'THEPASS' @defdb = N'master', @deflanguage = N'us_english'


USE [YOUR_DB]
    EXEC dbo.sp_grantdbaccess @loginame = N'USERNAME', @name_in_db = N'USERNAME'