简体   繁体   English

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

[英]Create a new db user in SQL Server 2005

how do you create a new database user with password in sql server 2005?如何在 sql 服务器 2005 中创建一个新的数据库用户和密码?

i will need this user/password to use in the connection string eg:我将需要此用户/密码才能在连接字符串中使用,例如:

uid=*user*;pwd=*password*;
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

Where CHECK_POLICY=OFF switches off password complexity check, etc其中CHECK_POLICY=OFF关闭密码复杂性检查等

As of SQL Server 2005, you should basically create users in two steps:从 SQL Server 2005 开始,您基本上应该分两步创建用户:

  • create a "login" to your SQL Server as a whole为您的 SQL 服务器整体创建一个“登录”
  • create users for this login in each database needed在所需的每个数据库中为此登录创建用户

You'd go about doing this like so:你会 go 这样做:

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

And the "USE" your database and create a user for that login:并“使用”您的数据库并为该登录创建一个用户:

USE AdventureWorks;
CREATE USER MyNewUser FOR LOGIN MyNewUser

As indicated, use the CREATE LOGIN to create the ability to connect to SQL Server as that account.如图所示,使用 CREATE LOGIN 创建以该帐户连接到 SQL 服务器的能力。 Then use CREATE USER within the database to give that login the ability to access the database in question.然后在数据库中使用 CREATE USER 使该登录能够访问相关数据库。

However, a few security points based on some of these comments:但是,基于其中一些评论的一些安全点:

  • If at all possible, you want to use Windows authentication, not a SQL Server based login (which is what you are doing when you use user/pwd in this manner).如果可能的话,您想使用 Windows 身份验证,而不是基于 SQL 服务器的登录(这是您以这种方式使用用户/密码时所做的事情)。 If you are running from a computer on the same domain as SQL Server, you can use a service account that is a Windows user account.如果您从与 SQL 服务器位于同一域的计算机上运行,则可以使用作为 Windows 用户帐户的服务帐户。 This ensures the domain is the single source for security.这确保了域是安全的单一来源。
  • You didn't say what rights the user needed.你没有说用户需要什么权限。 Avoid using db_datareader and db_datawriter roles whenever possible.尽可能避免使用 db_datareader 和 db_datawriter 角色。 They give IMPLICIT access to tables and views and if someone is performing a quick permissions check on the database, they may not think to check the membership in these roles.他们提供对表和视图的隐式访问,如果有人正在对数据库执行快速权限检查,他们可能不会考虑检查这些角色的成员资格。 That means your reporting on security is using.这意味着您的安全报告正在使用。 Best practices say to create your own database role, assign permissions to it, and make the user a member of that role.最佳实践是创建自己的数据库角色,为其分配权限,并使用户成为该角色的成员。
  • Whenever possible, use a strong password.尽可能使用强密码。 One example had the password policies turned off.一个示例关闭了密码策略。 SQL Server will use the password policy from the local server (which is usually set at the domain level). SQL 服务器将使用来自本地服务器的密码策略(通常在域级别设置)。 You want to maintain that strong password policy, if possible.如果可能,您希望维护该强密码策略。

You'll have to create it first as a user, and then set up the correct permissions for the user.您必须首先以用户身份创建它,然后为用户设置正确的权限。

  1. you'll have to ensure that your DB is configured with both User auth and SQL auth If using the Management Studio: right-click on the Server, select "Security" ensure that server authentication is "SQL Server and Windows Authentication mode"您必须确保您的数据库配置了用户身份验证和 SQL 身份验证如果使用 Management Studio:右键单击服务器,select“安全”确保服务器身份验证为“SQL Server 和 ZAEA23489CE30AAB464028E”

  2. in Security-logins, right click and select "New Login", select SQL Authentication, use the username and password you like.在Security-logins中,右键select“新建登录”,select SQL Authentication,使用你喜欢的用户名和密码。

     USE [master] GO CREATE LOGIN [ test] WITH PASSWORD=N'test', DEFAULT_DATABASE=[MY_DATABASE], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO
  3. on the DB you want, in security, users, select new User.在您想要的数据库上,在安全性用户中,select 新用户。 Select a username, and attach the login name you've just created, and select the roles you want to apply to this user (ie db_datareader , db_datawriter ): Select 用户名,并附上您刚刚创建的登录名,以及 select 您要应用到此用户的角色(即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

That is it.这就对了。 Now you can create your connection string using this password.现在您可以使用此密码创建连接字符串。

CREATE LOGIN MyNewUser WITH PASSWORD = 'top$secret'

USE AdventureWorks 
CREATE USER MyNewUser FOR LOGIN MyNewUser 
GO
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'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM