it-swarm-eu.dev

Jak udělím všechna oprávnění místnímu db2admin s DB2 9.7 ve Windows?

Jako vývojová stanice mám notebook s OS Windows XP Professional Edition, Service Pack 3).

Stáhl jsem a nainstaloval IBM DB2 UDB 9.7, sada oprav 4, vydání Express-C.

Mám lokální účet Windows s názvem db2admin, který používám jako správce lokální databáze pro svou místní instalaci produktu DB2 (pouze pro vývojářské účely).

Při spuštění příkazového okna mohu bez problémů spustit následující:

db2 attach to db2 user db2admin using xxxxxxxxxx

To mi umožňuje připojit se k mé instanci zvané DB2.

Mohu spustit své příkazy k vytvoření databáze.

Poté se pokusím připojit k databázi a udělit všechna oprávnění pro můj účet db2admin v produktu 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;

Když to však spustím, DB2 mi řekne, že můj skutečný uživatelský účet systému Windows (synprgcma) nemá oprávnění udělit oprávnění uživateli db2admin.

Takže pokud změním druhý skript na následující:

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;

Potom mi DB2 řekne, že db2admin nemůže zrušit nebo udělit oprávnění k sobě (ve skutečnosti mi říká, že id nemůže zrušit nebo udělit oprávnění k sobě).

Takže jsem pahýl. Tento problém jsem neměl s předchozí instalací produktu DB2 (9.5 a nepamatuji si, na které opravné sadě jsem byl).

Jak udělím potřebná oprávnění účtu místního správce? Věřím, že to potřebuji, abych mohl spustit příkaz vazby, který musím udělat dál:

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

Jakákoli pomoc by byla oceněna.

Edit: Našel jsem některé z následujících odkazů, které s tím souvisejí. Stále si ještě nejsem jistý, jak to funguje, ale aspoň jsem našel nějakou dokumentaci.

10
Chris Aldrich

Na základě posledních výše uvedených odkazů v mé úpravě na mou otázku jsem našel svou odpověď. Nemohu vylepšit systémový účet, protože naše přihlašovací údaje k našemu systému jsou z LDAP a nemohu ovládat skupiny a co ne.

Takže jsem udělal následující:

  1. Otevření grafického uživatelského rozhraní DB2 (bylo to nejjednodušší).
  2. Připojeno k požadované databázi jako db2admin.
  3. Přidal jsem své přihlášení do databáze jako uživatel.
  4. UDĚLUJTE všem orgánům toto id (moje id).
  5. Odpojit.
  6. Připojte se k požadované databázi jako moje ID.
  7. GRANT všechna oprávnění k db2admin.
  8. Odpojit.

Voila! Db2admin se nyní přihlašuje jako všechna oprávnění.

EDIT: Chystám se opustit výše uvedené, protože mi to pomohlo naučit se dělat nějaké zajímavé věci v DB2. Dozvěděl jsem se však, že oprávnění DBADM/SECADM s oprávněními DATAACCESS a ACCESSCTRL, která udělili vlastníkovi instance (v mém případě identifikátor db2admin), mají všechna oprávnění potřebná pro interakci s databází. Vlastně jsem mohl ve skriptu výše uvedené dotační řádky komentovat. Ty zůstaly ze skriptu, který běžel proti starší verzi DB2. Také jsem zjistil, že pokud potřebuji majitele instance DBADM po provedení obnovy do databáze A z databáze B, je nejjednodušší nastavit proměnnou registru DB2_RESTORE_GRANT_ADMIN_AUTHORITY na YES (k dispozici v opravě Pack 2 a výše). Pak se nemusím snažit udělit vlastníkovi instance DBADM. Je automaticky uděleno, že jakékoli databázi obnovené do instance. Pokud nejste na opravném balíčku 5, musíte odrazit instanci, aby se to projevilo.

5
Chris Aldrich