ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 에 대한 얘기는 없다.


Designed by Tistory.