web-dev-qa-db-fra.com

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

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 droits (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.

10
Chris Aldrich

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 comme toutes les autorités.

EDIT: 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. Si vous n'êtes pas au Fix Pack 5, vous devez faire rebondir l'instance pour que cela prenne effet.

5
Chris Aldrich