Создать нового пользователя БД в SQL Server 2005 - PullRequest
8 голосов
/ 20 марта 2009

Как создать пользователя базы данных с паролем в SQL Server 2005?

Мне понадобится этот пользователь / пароль для использования в строке подключения, например:

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

Ответы [ 6 ]

16 голосов
/ 20 марта 2009
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 отключает проверку сложности пароля и т. Д.

6 голосов
/ 20 марта 2009

Начиная с SQL Server 2005, вы должны создавать пользователей в два этапа:

  • создать «логин» для вашего SQL Server в целом
  • создать пользователей для этого логина в каждой необходимой базе данных

Вы бы поступили так:

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

И "ИСПОЛЬЗУЙ" свою базу данных и создай пользователя для этого логина:

USE AdventureWorks;
CREATE USER MyNewUser FOR LOGIN MyNewUser
2 голосов
/ 21 марта 2009

Как указано, используйте CREATE LOGIN, чтобы создать возможность подключения к SQL Server в качестве этой учетной записи. Затем используйте CREATE USER в базе данных, чтобы дать этому логину возможность доступа к рассматриваемой базе данных.

Однако несколько точек безопасности основаны на некоторых из этих комментариев:

  • Если это вообще возможно, вы хотите использовать аутентификацию Windows, а не регистрацию на основе SQL Server (что вы и делаете, когда используете user / pwd таким образом). Если вы работаете с компьютера в том же домене, что и SQL Server, вы можете использовать служебную учетную запись, которая является учетной записью пользователя Windows. Это гарантирует, что домен является единственным источником безопасности.
  • Вы не сказали, какие права нужны пользователю. По возможности избегайте использования ролей db_datareader и db_datawriter. Они предоставляют IMPLICIT доступ к таблицам и представлениям, и если кто-то выполняет быструю проверку разрешений для базы данных, он может не подумать о проверке членства в этих ролях. Это означает, что ваша отчетность по безопасности использует. Лучшие практики говорят о том, чтобы создать собственную роль базы данных, назначить ей разрешения и сделать пользователя участником этой роли.
  • По возможности используйте надежный пароль. В одном примере политики паролей были отключены. SQL Server будет использовать политику паролей с локального сервера (которая обычно устанавливается на уровне домена). Вы хотите сохранить эту политику надежного пароля, если это возможно.
1 голос
/ 20 марта 2009

Сначала вам нужно будет создать его как пользователь, а затем настроить правильные разрешения для пользователя.

  1. вам нужно убедиться, что ваша БД настроена как с аутентификацией пользователя, так и с аутентификацией SQL При использовании Management Studio: щелкните правой кнопкой мыши по серверу, выберите «Безопасность» и убедитесь, что для аутентификации сервера используется «Режим аутентификации 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_datareader, db_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
    

Вот и все. Теперь вы можете создать строку подключения, используя этот пароль.

0 голосов
/ 07 мая 2011
CREATE LOGIN MyNewUser WITH PASSWORD = 'top$secret'

USE AdventureWorks 
CREATE USER MyNewUser FOR LOGIN MyNewUser 
GO
0 голосов
/ 20 марта 2009
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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...