Windows에서 DB2 9.7을 사용하여 로컬 db2admin에 모든 권한을 부여하려면 어떻게해야합니까?


10

OS Windows XP Professional Edition 서비스 팩 3이 포함 된 랩톱을 개발자 스테이션으로 보유하고 있습니다.

Express-C 에디션의 IBM DB2 UDB 9.7 수정 팩 4를 다운로드하여 설치했습니다.

DB2의 로컬 설치를 위해 로컬 데이터베이스 관리자로 사용하고있는 db2admin이라는 로컬 Windows 계정이 있습니다 (개발자 전용).

명령 창을 실행할 때 문제없이 다음을 실행할 수 있습니다.

db2 attach to db2 user db2admin using xxxxxxxxxx

이를 통해 DB2라는 인스턴스에 연결할 수 있습니다.

데이터베이스 작성 명령을 실행할 수 있습니다.

그런 다음 데이터베이스에 연결하여 DB2의 db2admin 계정에 대한 모든 권한을 부여하려고합니다.

db2 CONNECT TO MYDB;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

그러나 그것을 실행할 때 DB2는 실제 Windows 사용자 계정 (synprgcma)에 사용자 db2admin에게 권한을 부여 할 권한이 없음을 알려줍니다.

두 번째 스크립트를 다음과 같이 변경하면

db2 CONNECT TO MYDB USER db2admin USING xxxxxxxx;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

그런 다음 DB2는 db2admin이 자신에게 권한을 취소하거나 권한을 부여 할 수 없음을 알려줍니다 (실제로 ID가 권한을 취소하거나 권한을 부여 할 수 없음을 알려줍니다).

그래서 나는 혼란에 빠졌다. DB2의 이전 설치 (9.5)에서이 문제가 발생하지 않았으며 현재 어떤 수정 팩이 있는지 기억이 나지 않습니다.

로컬 관리자 계정에 필요한 권한을 부여하려면 어떻게합니까? 다음에 수행해야 할 바인드 명령을 실행하려면 이것이 필요하다고 생각합니다.

db2 CONNECT TO MYDB;
db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 20;
db2 CONNECT RESET;

도움을 주시면 감사하겠습니다.

편집 : 이와 관련된 다음 링크 중 일부를 찾았습니다. 아직도 어떻게 작동하는지 확실하지 않지만 적어도 문서를 찾았습니다.

답변:


5

내 질문에 대한 편집의 마지막 위 링크를 기반으로 답변을 찾았습니다. 시스템에 대한 로그온은 LDAP에서 왔기 때문에 시스템 계정을 조정할 수 없으며 그룹 및 기타를 제어 할 수 없습니다.

그래서 나는 다음을 수행했다.

  1. DB2 GUI를 열었습니다 (이 방법이 가장 쉬웠습니다).
  2. 원하는 데이터베이스에 db2admin으로 연결되었습니다.
  3. 데이터베이스에 사용자로 로그온을 추가했습니다.
  4. 모든 권한을 해당 ID (내 ID)에 부여하십시오.
  5. 연결을 끊습니다.
  6. 원하는 데이터베이스에 내 ID로 연결하십시오.
  7. 모든 권한을 db2admin에 부여하십시오.
  8. 연결을 끊습니다.

짜잔! db2admin이 이제 모든 권한으로 로그온했습니다.

편집하다:DB2에서 흥미로운 일을하는 방법을 배우는 데 도움이되었으므로 위의 내용을 그대로 두겠습니다. 그러나 DATAACCESS 및 ACCESSCTRL 권한이있는 DBADM / SECADM 권한이 인스턴스 소유자 (내 경우에는 db2admin ID)에 데이터베이스와 상호 작용하는 데 필요한 모든 권한이 있음을 알게되었습니다. 스크립트에서 위의 보조금 줄을 실제로 주석 처리했을 수 있습니다. 그것들은 이전 버전의 DB2에 대해 실행 된 스크립트에서 남겨졌습니다. 또한 데이터베이스 B에서 데이터베이스 A로 복원 한 후 인스턴스 소유자 DBADM이 필요한 경우 레지스트리 변수 DB2_RESTORE_GRANT_ADMIN_AUTHORITY를 YES로 설정하는 것이 가장 쉬운 방법입니다 (Fix Pack 2 이상에서 사용 가능). 그런 다음 인스턴스 소유자에게 DBADM을 부여하려고 할 필요가 없습니다. 인스턴스에 복원 된 모든 데이터베이스에 자동으로 부여됩니다.


DB2 GUI의 의미를 잘 모르겠습니다. 시도 할 수있는 명령 행 버전이 있습니까?
일요일

@ sunk818-단계는 명령 줄에서도 동일합니다. 버전 9.7부터 보안 시작과 관련하여 DB2가 작동하는 방식과 더 관련이 있습니다.
Chris Aldrich

내 관심사는 데이터베이스를 만들기 위해 SYSADM 액세스 권한을 갖는 것과 관련이 있습니다 ... 아마도 잘못된 질문을 방문했을 것입니다. ;)
Sun

SYSADM은 항상 데이터베이스를 작성할 수있는 기능이 없습니다. SYSCTRL도 마찬가지입니다.
Chris Aldrich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.