SQL Server Express에서 admin
사용자 ( abcd
비밀번호 사용) 를 만드는 스크립트를 작성하고 싶습니다 . 또한이 사용자에게 admin
모든 권한 을 할당하고 싶습니다 .
SQL Server Express에서 admin
사용자 ( abcd
비밀번호 사용) 를 만드는 스크립트를 작성하고 싶습니다 . 또한이 사용자에게 admin
모든 권한 을 할당하고 싶습니다 .
답변:
귀하의 질문에 따르면 사용자 와 로그인 의 차이점에 대해 약간 혼란 스러울 수 있다고 생각합니다 . 로그인 서버에 로그인 할 수 있으며, 누가 암호를 가진 사람 - 전체 SQL 서버의 계정입니다. 사용자 A는 로그인 특정 데이터베이스에 액세스 할 수있는.
로그인 생성 은 쉽고 특정 데이터베이스에서 로그인을위한 사용자 계정을 생성하기 전에 반드시 수행해야 합니다.
CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO
방금 선언 한 로그인 을 사용하여 db_owner 권한이 있는 사용자 를 만드는 방법은 다음과 같습니다 .
Use YourDatabase;
GO
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO
이제 로그인 은 위에 보이는 것보다 약간 더 유동적입니다. 예를 들어, 데이터베이스가 설치 될 때 Windows 관리자 계정에 대한 로그인 계정이 자동으로 생성됩니다 (대부분의 SQL Server 설치에서). 대부분의 경우 데이터베이스를 관리 할 때 사용합니다 (모든 권한이 있음).
그러나 응용 프로그램에서 SQL Server에 액세스하려는 경우 서버를 "혼합 모드"(Windows 및 SQL 로그인 모두)로 설정하고 위와 같이 로그인을 생성 할 수 있습니다. 그런 다음 앱에 필요한 사항에 따라 해당 SQL 로그인에 대한 권한을 "GRANT"합니다. 자세한 내용은 여기 를 참조하십시오.
업데이트 : Aaron은 sp_addsrvrolemember를 사용하여 로그인 계정에 준비된 역할을 할당한다고 지적합니다. 이것은 좋은 생각입니다. 권한을 수동으로 부여하는 것보다 빠르고 쉽습니다. Google을 검색하면 많은 링크가 표시됩니다. 그러나 로그인과 사용자의 차이점을 이해해야합니다.
전체 서버 또는 특정 데이터베이스에 대한 전체 관리자 권한이 있습니까? 다른 사람들은 데이터베이스에 대해 대답했지만 서버에 대해서는 다음과 같이 대답했습니다.
USE [master];
GO
CREATE LOGIN MyNewAdminUser
WITH PASSWORD = N'abcd',
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember
@loginame = N'MyNewAdminUser',
@rolename = N'sysadmin';
사용중인 SQL Server Express 버전에 따라 CHECK_ 매개 변수를 생략해야 할 수 있습니다 ( 질문에이 정보를 포함 하는 것이 거의 항상 유용합니다).
일반 스크립트를 생성하려면 사용자 이름과 데이터베이스 이름으로 Replace 문을 사용하여 실행할 수 있습니다.
Declare @userName as varchar(50);
Declare @defaultDataBaseName as varchar(50);
Declare @LoginCreationScript as varchar(max);
Declare @UserCreationScript as varchar(max);
Declare @TempUserCreationScript as varchar(max);
set @defaultDataBaseName = 'data1';
set @userName = 'domain\userName';
set @LoginCreationScript ='CREATE LOGIN [{userName}]
FROM WINDOWS
WITH DEFAULT_DATABASE ={dataBaseName}'
set @UserCreationScript ='
USE {dataBaseName}
CREATE User [{userName}] for LOGIN [{userName}];
EXEC sp_addrolemember ''db_datareader'', ''{userName}'';
EXEC sp_addrolemember ''db_datawriter'', ''{userName}'';
Grant Execute on Schema :: dbo TO [{userName}];'
/*Login creation*/
set @LoginCreationScript=Replace(Replace(@LoginCreationScript, '{userName}', @userName), '{dataBaseName}', @defaultDataBaseName)
set @UserCreationScript =Replace(@UserCreationScript, '{userName}', @userName)
Execute(@LoginCreationScript)
/*User creation and role assignment*/
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', @defaultDataBaseName)
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db2')
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db3')
Execute(@TempUserCreationScript)
당신이 사용할 수있는:
CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO
로그인을 생성하려면 (자세한 내용은 여기 를 참조하십시오).
그런 다음 다음을 사용해야 할 수 있습니다.
CREATE USER user_name
특정 데이터베이스에 대한 로그인과 관련된 사용자를 만들려면 액세스 권한도 부여해야합니다.
다음을 사용할 수도 있습니다.
GRANT permission [ ,...n ] ON SCHEMA :: schema_name
사용자에게 할당 한 스키마에 대한 권한을 설정합니다.
유용하다고 생각되는 두 가지 다른 명령은 ALTER USER 및 ALTER LOGIN 입니다.
CREATE LOGIN AdminLOGIN WITH PASSWORD = 'pass'
GO
Use MyDatabase;
GO
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'AdminLOGIN')
BEGIN
CREATE USER [AdminLOGIN] FOR LOGIN [AdminLOGIN]
EXEC sp_addrolemember N'db_owner', N'AdminLOGIN'
EXEC master..sp_addsrvrolemember @loginame = N'adminlogin', @rolename = N'sysadmin'
END;
GO
다음을 사용하여 네트워크에 대한 전체 도움말 :
1- Right-click on SQL Server instance at root of Object Explorer, click on Properties
Select Security from the left pane.
2- Select the SQL Server and Windows Authentication mode radio button, and click OK.
3- Right-click on the SQL Server instance, select Restart (alternatively, open up Services and restart the SQL Server service).
4- Close sql server application and reopen it
5- open 'SQL Server Configuration Manager' and tcp enabled for network
6-Double-click the TCP/IP protocol, go to the IP Addresses tab and scroll down to the IPAll section.
7-Specify the 1433 in the TCP Port field (or another port if 1433 is used by another MSSQL Server) and press the OK
8-Open in Sql Server: Security And Login And Right Click on Login Name And Select Peroperties And Select Server Roles And
Checked The Sysadmin And Bulkadmin then Ok.
9-firewall: Open cmd as administrator and type:
netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT
지난주에 저는 Microsoft SQL Server 2014 Developer Edition을 제 개발 용 박스에 설치했고 즉시 이전에 본 적이없는 문제에 직면했습니다.
다양한 버전의 SQL Server를 수없이 설치했으며 일반적으로 고통스러운 절차입니다. 서버를 설치하고 관리 콘솔을 실행하면 간단합니다. 하지만이 설치를 완료 한 후 SSMS를 사용하여 서버에 로그인하려고 할 때 아래와 같은 오류가 발생했습니다.
SQL Server 로그인 오류 18456 "Login failed for user… (Microsoft SQL Server, 오류 : 18456)"로그인 할 때 잘못된 암호를 입력하면이 오류가 표시되는 데 익숙하지만 혼합 모드를 사용하는 경우에만 발생합니다 ( Windows 및 SQL 인증). 이 경우 서버는 Windows 인증만으로 설정되었고 사용자 계정은 내 소유였습니다. 설정하는 동안 내 사용자를 SYSADMIN 역할에 추가하지 않은 이유가 아직 확실하지 않습니다. 아마도 나는 한 단계를 놓치고 그것을 추가하는 것을 잊었습니다. 어쨌든 모든 희망을 잃은 것은 아닙니다.
SQL Server에 다른 계정으로 로그온 할 수없는 경우이 문제를 해결하는 방법은 명령 줄 인터페이스를 통해 네트워크 로그인을 추가하는 것입니다. 이 작업을 수행하려면 로그온 한 PC의 Windows 관리자 여야합니다.
MSSQL 서비스를 중지하십시오. 관리자 권한으로 실행을 사용하여 명령 프롬프트를 엽니 다. SQL Server EXE 파일이있는 폴더로 변경하십시오. SQL Server 2014의 기본값은 "C : \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Binn"입니다. 다음 명령을 실행합니다. "sqlservr.exe –m". 단일 사용자 모드에서 SQL Server를 시작합니다. 이 명령 프롬프트를 열어 둔 채로 2 단계와 3 단계를 반복하여 다른 명령 프롬프트를 엽니 다. 두 번째 명령 프롬프트 창에서 "SQLCMD –S Server_Name \ Instance_Name"을 실행합니다.이 창에서 다음 줄을 실행하고 각 줄을 입력 한 후 Enter 키를 누릅니다. 1
CREATE LOGIN [domainName \ loginName] FROM WINDOWS 2 GO 3 SP_ADDSRVROLEMEMBER 'LOGIN_NAME', 'SYSADMIN'4 GO 명령 프롬프트 창에서 두 프로세스를 모두 종료하려면 CTRL + C를 사용합니다. SQL Server 프로세스를 종료하려면 Y를 누르라는 메시지가 표시됩니다.
MSSQL 서비스를 다시 시작하십시오. 그게 다야! 이제 네트워크 로그인을 사용하여 로그인 할 수 있습니다.