¿Cómo otorgo todos los privilegios a db2admin local con DB2 9.7 en Windows?

10

Tengo como estación de desarrollador una computadora portátil con SO Windows XP Professional Edition, Service Pack 3.

He descargado e instalado el fixpack 4 de IBM DB2 UDB 9.7, de la edición Express-C.

Tengo una cuenta local de Windows llamada db2admin que estoy usando como administrador de mi base de datos local para mi instalación local de DB2 (solo para desarrolladores).

Puedo ejecutar lo siguiente sin problemas al ejecutar la ventana de comandos:

db2 attach to db2 user db2admin using xxxxxxxxxx

Eso me permite adjuntarme a mi instancia llamada DB2.

Puedo ejecutar mis comandos de creación de base de datos.

Luego intento conectarme a la base de datos para otorgar todos los privilegios para mi cuenta db2admin en 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;

Sin embargo, cuando ejecuto eso, DB2 me dice que mi cuenta de usuario de Windows real (synprgcma) no tiene autoridad para otorgar autoridad al usuario db2admin.

Entonces, si cambio el segundo script a lo siguiente:

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;

Luego, DB2 me dice que db2admin no puede revocar o otorgar autoridad a sí mismo (en realidad me dice que un ID no puede revocar ni otorgar autoridad a sí mismo).

Entonces estoy perplejo. No tuve este problema con mi instalación anterior de DB2 (9.5, y no recuerdo en qué fixpack estaba).

¿Cómo otorgo las autoridades necesarias a la cuenta de administrador local? Creo que necesito esto para ejecutar un comando de enlace que debo hacer a continuación:

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

Cualquier ayuda sería apreciada.

Editar: he encontrado algunos de los siguientes enlaces relacionados con esto. Todavía no estoy seguro de cómo hacerlo funcionar, pero al menos he encontrado documentación.

Chris Aldrich
fuente

Respuestas:

5

Basado en los últimos enlaces anteriores en mi edición de mi pregunta, encontré mi respuesta. No puedo modificar la cuenta del sistema ya que nuestros inicios de sesión en nuestro sistema provienen de un LDAP y no puedo controlar los grupos y lo que no.

Entonces hice lo siguiente:

  1. Abrió la GUI de DB2 (fue más fácil hacerlo de esta manera).
  2. Conectado a la base de datos deseada como db2admin.
  3. Agregué mi inicio de sesión a la base de datos como usuario.
  4. OTORGAR todas las autoridades a esa identificación (mi identificación).
  5. Desconectar.
  6. Conéctese a la base de datos deseada como mi id.
  7. Otorgue todas las autoridades a db2admin.
  8. Desconectar.

Voila! El inicio de sesión db2admin ahora como todas las autoridades.

EDITAR:Voy a dejar lo anterior, ya que me ayudó a aprender cómo hacer algunas cosas interesantes en DB2. Sin embargo, he aprendido que las autoridades DBADM / SECADM con DATAACCESS y ACCESSCTRL otorgadas al propietario de la instancia (en mi caso, la identificación db2admin) tienen toda la autoridad necesaria para interactuar con la base de datos. En realidad, podría haber comentado las líneas de concesión anteriores en el guión. Estos quedaron de una secuencia de comandos que se ejecutó en una versión anterior de DB2. También descubrí que si necesito tener el propietario de la instancia DBADM después de hacer una restauración a la base de datos A desde la base de datos B, es más fácil configurar la variable de registro DB2_RESTORE_GRANT_ADMIN_AUTHORITY en YES (disponible en el Fixpack 2 y superior). Entonces no tengo que intentar otorgar al propietario de la instancia DBADM. Se otorga automáticamente a cualquier base de datos restaurada en la instancia.

Chris Aldrich
fuente
No estoy seguro de lo que quiere decir con la GUI de DB2. ¿Hay una versión de línea de comando que podamos probar?
Dom
@ sunk818: los pasos serían los mismos incluso para la línea de comandos. Tiene más que ver con el funcionamiento de DB2 con respecto a la seguridad a partir de la versión 9.7.
Chris Aldrich
Mi preocupación tenía que ver con tener acceso SYSADM para crear una base de datos ... Tal vez he visitado la pregunta incorrecta. ;)
Dom
SYSADM siempre tiene la capacidad de crear una base de datos. También lo hace SYSCTRL.
Chris Aldrich