-
SQLServer2008 - 설치, Create User, DB 등 초기세팅♣ Tech & Biz Salon/Tech 2012. 12. 11. 14:48
이제 물리모델링에 들어가는데 내가 작명한게 혹시 예약어라서 실제 db 생성시 안될수도 있을까 싶어서
테스트하려면 db를 만들어놓아야 하므로 오늘 db 생성, user 생성같은걸 먼저 함 해보았다.오라클의 경우 Table Space생성, User 생성, Grant 와 같은 식으로 진행했었던거 같다.
뭐 그런 일을 여러번 했었고, 만들었던 DDL을 정리까지 해두어서 어려움없이 편안히 진행했었다.근데... SQLServer은... 내가 직접 User, DB 생성하는 세팅을 해본지는 꽤 오래되어서...
게다가 버젼도 2008 에서 하다보니 뭔가 예전과 다른거 같기도 하고 무척 헷갈렸다.이래 저래 해보면서 감을 좀 잡았는데 맞게 한건지 모르겠다만 정리해본다.
● 최초 Install시 기능 선택 하는 부분이 있는데 따로 정리하기 뭐해서 이 글에 넣어둔다
(기능선택시 참고했던 sqler.com 의 설치 강좌 동영상의 해당부분임. 나는 좀 더 기능을 선택했음 )● ● 아래 내용들에 대해 좀 더 개괄적으로 정리해보겠다. ----------------------------------- start
(2012.12.11) 기존에 쓴 글 다시 참고하다보니 정리가 좀 깔끔하게 안되어 있어서...
아래 쭈욱 넣은것들을 요약해본다.- sa : db admin
- pssadmin : pssdb 를 생성하고 소유할 유저
- pssuser : pssdb를 crud 하는 유저1. sa 계정에서 login (pssadmin) 생성
* login 생성은 보안 > 로그인에서 하면 된다. 이때 서버역할에 dbcreator를 체크한다.
추후 이 login으로 타 db 백업해놓을걸 복원하기 위해서는 sysadmin 도 체크하도록 한다.
( 참고로 백업시에도 sysadmin 권한이 필요할수 있음... 로컬db에서는 필요했던거 같은데 지금 테스트db에서는 그 권한이 없어도 백업은 되네... )2. pssadmin 으로 커넥트
3. pssdb 생성
4. sa로 커넥트, login (pssuser) 생성
* 이미 install 을 client 만 한 상황이었을때는 SQL Server 설치센터라는 메뉴가 프로그램쪽에 보일것이다.
이것을 클릭해서 db 설치과정을 밟으면 된다.---------------------------------------------------------------------------------------- end
● Login 이라는 개념이 있다. sa 도 Login 의 여러개 값들중 하나의 값이다.
sa Login 은
- Role 과 매핑되어 있다 : public, sysadmin
- User 와 매핑되어 있다 : master● 직접 user 생성하는건 SQL Server Management Studio ( SSMS 로 줄여 부른다고 함... ) 의 메뉴에 보이질 않는다.
좀 하다보니 user 를 직접 만들 필요는 없는거 같고, user 개념이 뭔가 깔끔하지 않은데... 그건 마지막에 적어두었다.● 먼저 기본 세팅 완료한 상황의 그림을 보자.
pssdb 를 만들어서 쓰는게 목적이다.
db테이블 생성, 변경 등은 pssadmin Login에게 권한이 있는 것이고
CUDR 등은 pssuser Login에게도 권한을 줄것이다. 즉 AP 에서 DB 를 접속하는 계정의 용도이다.item이라는 테이블을 만들었는데, dbo.이 앞에 붙는다. dbo 는 스키마라는 개념의 값인데... 정확히 개념을 못잡았다.
그냥 skip 하기로 한다. (user 개념에도 dbo라는 값이 있고, 스키마 개념에도 dbo 라는 값이 있음 )
● pssadmin Login 생성pssadmin, pssuser 는 모두 SQLServer Authification 으로 생성 (당연한 얘기)
server roles 를 보면 public 이 기본으로 체크되어 있다.
pssadmin 으로 접속해서 pssdb 를 세팅할 것이므로 dbcreator 도 체크!생성후 확인해보면 owner 에 pssadmin 이 박혀있다
● pssuser Login 생성
Enforce password policy 를 uncheck 하면 아래 두개도 uncheck 된다.
● pssuser 에 대해 Grant 진행
pssuser 생성후 로긴해봤자 item 이라고 만든 테이블의 존재도 보이지 않는다.
pssdb 속성창에서 Permissions 를 가보면... Explicit 탭에서 어떤 Permission 이 주어져있는지 명확히 볼 수 있다.With Grant 클릭시엔 Grant 도 자동 체크가 된다. With Grant는 다른 놈한테 권한부여할 수 있는 권한을 의미한다.
( 참고 : http://blog.sqlauthority.com/2010/04/03/sql-server-difference-between-grant-and-with-grant/
오라클에도 With Grant 성의 개념이 있었던거 같기도 한데... 잘모르겠다... )Effective 탭에는 부여받은 권한들만 정리해서 볼 수 있다.
기본으로 선택되어 있는건 connect 하나였던거 같고
CUDR 등과 Create Fuction / Procedure 등도 체크했다.
● 뭔가 이해를 좀 해보고자 pssdb를 선택해 ddl 을 생성해보았다. 그랬더니 아래의 문장이 있다.CREATE USER [pssuser] FOR LOGIN [pssuser] WITH DEFAULT_SCHEMA=[dbo]
pssuser User의 존재는
pssuser Login 의 속성창 > User Mapping 에서도 확인할 수 있긴 하다.암튼... 미루어 짐작해보면 이런거다.
특정 Login 에게 본인이 Owner가 아닌 DB를 볼 수 있게 세팅하면...
해당 Login 과 동일한 명의 User가 생성되고, 그 동일명의 User와 Login 이 매핑된다.참고로 pssadmin Login 의 속성창 > User Mapping 에는
dbo라는 User가 매핑되어 있다.* 이 dbo라는 User는 dbowner인 pssadmin 을 뜻하는 것 같다.
pssdb가 아닌 다른 db에도 dbo라는 User가 있을거고, 이건 또 그 다른 db의 dbowener를 뜻하는 것이 되겠지.* 즉 각 db마다 user가 존재하는 셈이될 거 같다.
pssuser 이라는 Login 을 testdb 라는 db에 권한을 주면... testdb 내에 pssuser 라는 user가 생길것이다.
* user, schema 개념이 잘 잡히지도 않고, 개념을 알고 싶지도 않아지는 짜증이 발생...
아마도 SQLServer 첨에 만들적에 타 dbms 와 다르게는 해야 할 거 같고
뭐 이러면서 깔끔하게 안된 것이라 99% 추측해본다.* 지금 서핑을 해보니 user, role 등에 대해 정리한 블로그 글이 보인다. schema 에 대한 얘기는 없다.
'♣ Tech & Biz Salon > Tech' 카테고리의 다른 글
SqlServer 백업 / 복제 (DB Copy 방식) 정리 (0) 2012.12.11 Windows에 Tomcat 세팅 및 Webapp 로딩 (0) 2012.11.28 jqgrid loadonce 에 대해서~ (0) 2012.11.23