Jak przyznać wszystkie uprawnienia lokalnemu db2admin z programem DB2 9.7 w systemie Windows?

10

Jako programista mam laptopa z systemem operacyjnym Windows XP Professional Edition, Service Pack 3.

Pobrałem i zainstalowałem pakiet poprawek 4 dla programu IBM DB2 UDB 9.7 w wersji Express-C.

Mam lokalne konto Windows o nazwie db2admin, którego używam jako lokalnego administratora bazy danych do mojej lokalnej instalacji DB2 (tylko do celów programistycznych).

Mogę uruchomić następujące problemy bez problemów podczas uruchamiania okna poleceń:

db2 attach to db2 user db2admin using xxxxxxxxxx

To pozwala mi dołączyć się do mojej instancji o nazwie DB2.

Mogę uruchomić polecenia tworzenia bazy danych.

Następnie próbuję połączyć się z bazą danych, aby udzielić wszystkich uprawnień dla mojego konta db2admin w DB2.

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;

Jednak po uruchomieniu programu DB2 informuje mnie, że moje rzeczywiste konto użytkownika systemu Windows (synprgcma) nie ma uprawnień do nadawania uprawnień użytkownikowi db2admin.

Więc jeśli zmienię drugi skrypt na następujący:

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;

Następnie DB2 mówi mi, że db2admin nie może odwołać ani nadać uprawnień sobie (w rzeczywistości mówi mi, że identyfikator nie może odwołać ani nadać uprawnień sobie).

Więc jestem zakłopotany. Nie miałem tego problemu z moją poprzednią instalacją programu DB2 (9.5 i nie pamiętam, w którym pakiecie poprawek byłem).

Jak przyznać niezbędne uprawnienia do lokalnego konta administratora? Myślę, że potrzebuję tego, aby uruchomić polecenie wiązania, które muszę wykonać w następnej kolejności:

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

Każda pomoc będzie mile widziana.

Edycja: Znalazłem niektóre z poniższych linków z tym związanych. Nadal nie jestem pewien, jak to zrobić, ale przynajmniej znalazłem trochę dokumentacji.

Chris Aldrich
źródło

Odpowiedzi:

5

Na podstawie ostatnich powyższych linków w mojej edycji do mojego pytania znalazłem odpowiedź. Nie mogę dostosować konta systemowego, ponieważ nasze logowania do naszego systemu pochodzą z LDAP i nie mogę kontrolować grup, a co nie.

Zrobiłem więc:

  1. Otwarto GUI DB2 (najłatwiej było to zrobić).
  2. Połączono z żądaną bazą danych jako db2admin.
  3. Dodano moje logowanie do bazy danych jako użytkownik.
  4. UDZIEL wszystkie uprawnienia do tego identyfikatora (mojego identyfikatora).
  5. Rozłączyć się.
  6. Połącz się z żądaną bazą danych jako mój identyfikator.
  7. UDZIEL wszystkie uprawnienia dla db2admin.
  8. Rozłączyć się.

Voila! Logowanie do db2admin odbywa się teraz jako wszystkie uprawnienia.

EDYTOWAĆ:Zostawię powyższe, ponieważ pomogło mi to nauczyć się robić ciekawe rzeczy w DB2. Dowiedziałem się jednak, że uprawnienia DBADM / SECADM z uprawnieniami DATAACCESS i ACCESSCTRL nadały właścicielowi instancji (w moim przypadku identyfikator db2admin) wszystkie uprawnienia potrzebne do interakcji z bazą danych. Mógłbym właśnie skomentować te wiersze grantu powyżej w skrypcie. Zostały one ze skryptu działającego na starszej wersji DB2. Przekonałem się również, że jeśli muszę mieć właściciela instancji DBADM po przywróceniu bazy danych A z bazy danych B, najłatwiej jest po prostu ustawić zmienną rejestru DB2_RESTORE_GRANT_ADMIN_AUTHORITY na TAK (dostępne w pakiecie poprawek 2 i nowszych). Potem nie muszę próbować przyznać właściciela instancji DBADM. Jest to automatycznie przyznawane każdej bazie danych przywróconej do instancji.

Chris Aldrich
źródło
Nie jestem pewien, co masz na myśli przez GUI DB2. Czy istnieje wersja wiersza polecenia, którą możemy wypróbować?
niedz.
@ sunk818 - kroki byłyby takie same nawet dla wiersza poleceń. Ma więcej wspólnego z tym, jak DB2 działa w zakresie bezpieczeństwa począwszy od wersji 9.7.
Chris Aldrich,
Moje obawy dotyczyły dostępu do SYSADM w celu utworzenia bazy danych ... Być może odwiedziłem niewłaściwe pytanie. ;)
niedz.
SYSADM zawsze ma możliwość utworzenia bazy danych. Podobnie SYSCTRL.
Chris Aldrich