Wie erteile ich dem lokalen db2admin mit DB2 9.7 unter Windows alle Berechtigungen?

10

Ich habe als Entwicklerstation einen Laptop mit OS Windows XP Professional Edition, Service Pack 3.

Ich habe IBM DB2 UDB 9.7 Fixpack 4 der Express-C Edition heruntergeladen und installiert.

Ich habe ein lokales Windows-Konto namens db2admin, das ich als lokaler Datenbankadministrator für meine lokale Installation von DB2 verwende (nur für Entwickler).

Ich kann Folgendes ohne Probleme ausführen, wenn ich das Befehlsfenster ausführe:

db2 attach to db2 user db2admin using xxxxxxxxxx

Dadurch kann ich eine Verbindung zu meiner Instanz namens DB2 herstellen.

Ich kann meine Befehle zum Erstellen einer Datenbank ausführen.

Ich versuche dann, eine Verbindung zur Datenbank herzustellen, um alle Berechtigungen für mein db2admin-Konto in DB2 zu erteilen.

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;

Wenn ich das jedoch ausführe, teilt mir DB2 mit, dass mein tatsächliches Windows-Benutzerkonto (synprgcma) nicht berechtigt ist, dem Benutzer db2admin die Berechtigung zu erteilen.

Wenn ich also das zweite Skript wie folgt ändere:

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;

Dann teilt mir DB2 mit, dass db2admin sich selbst keine Berechtigung entziehen oder erteilen kann (tatsächlich sagt es mir, dass eine ID sich selbst keine Berechtigung entziehen oder erteilen kann).

Also bin ich ratlos. Ich hatte dieses Problem bei meiner vorherigen Installation von DB2 (9.5, und ich kann mich nicht erinnern, auf welchem ​​Fixpack ich war) nicht.

Wie erteile ich dem lokalen Administratorkonto die erforderlichen Berechtigungen? Ich glaube, ich brauche dies, um einen Bindungsbefehl auszuführen, den ich als nächstes ausführen muss:

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

Jede Hilfe wäre dankbar.

Bearbeiten: Ich habe einige der folgenden Links dazu gefunden. Ich bin mir immer noch nicht sicher, wie ich es zum Laufen bringen soll, aber zumindest habe ich eine Dokumentation gefunden.

Chris Aldrich
quelle

Antworten:

5

Aufgrund der letzten obigen Links in meiner Bearbeitung zu meiner Frage habe ich meine Antwort gefunden. Ich kann das Systemkonto nicht optimieren, da unsere Anmeldungen bei unserem System von einem LDAP stammen und ich die Gruppen nicht steuern kann und was nicht.

Also habe ich folgendes gemacht:

  1. Öffnete die DB2-GUI (war auf diese Weise am einfachsten).
  2. Verbunden mit der gewünschten Datenbank als db2admin.
  3. Meine Anmeldung als Benutzer zur Datenbank hinzugefügt.
  4. GEWÄHRLEISTEN Sie allen Behörden diese ID (meine ID).
  5. Trennen.
  6. Stellen Sie als meine ID eine Verbindung zur gewünschten Datenbank her.
  7. GEWÄHRLEISTUNG aller Behörden an db2admin.
  8. Trennen.

Voila! Der db2admin meldet sich jetzt wie alle Behörden an.

BEARBEITEN:Ich werde das oben Gesagte verlassen, da es mir geholfen hat, einige interessante Dinge in DB2 zu lernen. Ich habe jedoch erfahren, dass DBADM / SECADM mit den Berechtigungen DATAACCESS und ACCESSCTRL, die dem Instanzeigner (in meinem Fall die ID db2admin) erteilt wurden, über alle erforderlichen Berechtigungen für die Interaktion mit der Datenbank verfügen. Ich hätte diese Grant-Zeilen oben im Skript einfach auskommentieren können. Diese blieben von einem Skript übrig, das gegen eine ältere Version von DB2 lief. Ich habe auch festgestellt, dass es am einfachsten ist, die Registrierungsvariable DB2_RESTORE_GRANT_ADMIN_AUTHORITY auf YES zu setzen (verfügbar in Fixpack 2 und höher), wenn der Instanzeigner DBADM nach einer Wiederherstellung der Datenbank A aus Datenbank B benötigt wird. Dann muss ich nicht versuchen, den Instanzeigner DBADM zu gewähren. Dies wird automatisch jeder in der Instanz wiederhergestellten Datenbank gewährt.

Chris Aldrich
quelle
Nicht sicher, was Sie unter DB2-GUI verstehen. Gibt es eine Befehlszeilenversion, die wir ausprobieren können?
So
@ sunk818 - Schritte wären auch für die Befehlszeile gleich. Es hat mehr damit zu tun, wie DB2 ab Version 9.7 in Bezug auf die Sicherheit funktioniert.
Chris Aldrich
Mein Anliegen war es, SYSADM-Zugriff zum Erstellen einer Datenbank zu haben ... Vielleicht habe ich die falsche Frage besucht. ;)
So
SYSADM kann immer eine Datenbank erstellen. SYSCTRL auch.
Chris Aldrich