Comment accorder tous les privilèges à db2admin local avec DB2 9.7 sous Windows?

10

J'ai comme station de développeur un ordinateur portable avec OS Windows XP Professional Edition, Service Pack 3.

J'ai téléchargé et installé le groupe de correctifs 4 d'IBM DB2 UDB 9.7, de l'édition Express-C.

J'ai un compte Windows local appelé db2admin que j'utilise en tant qu'administrateur de base de données local pour mon installation locale de DB2 (à des fins de développement uniquement).

Je peux exécuter ce qui suit sans problème lors de l'exécution de la fenêtre de commande:

db2 attach to db2 user db2admin using xxxxxxxxxx

Cela me permet de me connecter à mon instance appelée DB2.

Je peux exécuter mes commandes de création de base de données.

J'essaie ensuite de me connecter à la base de données pour accorder tous les privilèges pour mon compte db2admin dans 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;

Cependant, lorsque j'exécute cela, il DB2 me dit que mon compte d'utilisateur Windows réel (synprgcma) n'a pas le pouvoir d'accorder l'autorisation à l'utilisateur db2admin.

Donc, si je change le deuxième script comme suit:

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;

Ensuite, DB2 m'indique que db2admin ne peut pas révoquer ou s'octroyer des pouvoirs (en fait, il me dit qu'un identifiant ne peut pas révoquer ou s'octroyer des pouvoirs).

Je suis donc perplexe. Je n'ai pas eu ce problème avec mon installation précédente de DB2 (9.5, et je ne me souviens plus à quel groupe de correctifs j'étais).

Comment accorder les autorisations nécessaires au compte d'administrateur local? Je crois que j'en ai besoin pour exécuter une commande de liaison que je dois faire ensuite:

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

Toute aide serait appréciée.

Edit: J'ai trouvé certains des liens suivants liés à cela. Je ne sais toujours pas encore comment le faire fonctionner, mais au moins j'ai trouvé de la documentation.

Chris Aldrich
la source

Réponses:

5

Sur la base des derniers liens ci-dessus dans ma modification à ma question, j'ai trouvé ma réponse. Je ne peux pas modifier le compte système car nos connexions à notre système proviennent d'un LDAP et je ne peux pas contrôler les groupes et ce qui ne l'est pas.

J'ai donc fait ce qui suit:

  1. Ouverture de l'interface graphique DB2 (était plus facile à faire de cette façon).
  2. Connecté à la base de données souhaitée en tant que db2admin.
  3. Ajout de ma connexion à la base de données en tant qu'utilisateur.
  4. Accordez toutes les autorités à cet identifiant (mon identifiant).
  5. Déconnectez-vous.
  6. Connectez-vous à la base de données souhaitée en tant que mon identifiant.
  7. Accordez toutes les autorités à db2admin.
  8. Déconnectez-vous.

Voila! L'ouverture de session db2admin maintenant que toutes les autorités.

ÉDITER:Je vais laisser ce qui précède car cela m'a aidé à apprendre comment faire des choses intéressantes dans DB2. Cependant, j'ai appris que le DBADM / SECADM avec les autorités DATAACCESS et ACCESSCTRL a accordé au propriétaire de l'instance (dans mon cas l'ID db2admin) tous les pouvoirs nécessaires pour interagir avec la base de données. J'aurais pu juste commenter ces lignes de subvention ci-dessus dans le script. Celles-ci ont été laissées par un script qui s'exécutait sur une ancienne version de DB2. J'ai également constaté que si je dois avoir le propriétaire de l'instance DBADM après avoir effectué une restauration dans la base de données A à partir de la base de données B, il est plus simple de définir la variable de registre DB2_RESTORE_GRANT_ADMIN_AUTHORITY sur YES (disponible dans le groupe de correctifs 2 et au-dessus). Ensuite, je ne dois pas essayer d'accorder le propriétaire d'instance DBADM. Il est automatiquement accordé à toute base de données restaurée dans l'instance.

Chris Aldrich
la source
Je ne sais pas ce que vous entendez par interface graphique DB2. Existe-t-il une version en ligne de commande que nous pouvons essayer?
Dim
@ sunk818 - les étapes seraient les mêmes, même pour la ligne de commande. Cela concerne davantage le fonctionnement de DB2 en matière de sécurité à partir de la version 9.7.
Chris Aldrich
Ma préoccupation était d'avoir accès à SYSADM pour créer une base de données ... J'ai peut-être visité la mauvaise question. ;)
Dim
SYSADM a toujours la possibilité de créer une base de données. SYSCTRL aussi.
Chris Aldrich