Как предоставить все привилегии локальному db2admin с DB2 9.7 в Windows?

10

В качестве разработчика я использую ноутбук с ОС Windows XP Professional Edition, Service Pack 3.

Я скачал и установил пакет исправлений 4 IBM DB2 UDB 9.7, редакции Express-C.

У меня есть локальная учетная запись Windows с именем db2admin, которую я использую в качестве администратора локальной базы данных для локальной установки DB2 (только для разработчиков).

Я могу запустить следующее без проблем при запуске окна команд:

db2 attach to db2 user db2admin using xxxxxxxxxx

Это позволяет мне подключаться к моему экземпляру под названием DB2.

Я могу запустить мои команды создания базы данных.

Затем я пытаюсь подключиться к базе данных, чтобы предоставить все привилегии для моей учетной записи db2admin в 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;

Однако, когда я запускаю это, DB2 сообщает мне, что моя действительная учетная запись пользователя Windows (synprgcma) не имеет полномочий для предоставления полномочий пользователю db2admin.

Поэтому, если я изменю второй скрипт на следующий:

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;

Затем DB2 говорит мне, что db2admin не может отозвать или предоставить полномочия самому себе (на самом деле он говорит мне, что идентификатор не может отозвать или предоставить полномочия самому себе).

Так что я в тупике. У меня не было этой проблемы с моей предыдущей установкой DB2 (9.5, и я не помню, какой пакет исправлений у меня был).

Как я могу предоставить необходимые полномочия локальной учетной записи администратора? Я считаю, что это нужно для того, чтобы выполнить команду связывания, которую мне нужно сделать дальше:

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

Любая помощь будет оценена.

Изменить: я нашел некоторые из следующих ссылок, связанных с этим. Все еще не уверен, как заставить это работать, но по крайней мере я нашел некоторую документацию.

Крис Олдрич
источник

Ответы:

5

На основании последних ссылок в моем редактировании на мой вопрос я нашел свой ответ. Я не могу настроить системную учетную запись, поскольку наши входы в нашу систему происходят из LDAP, и я не могу контролировать группы, а что нет.

Итак, я сделал следующее:

  1. Открыл графический интерфейс DB2 (так было проще всего).
  2. Подключен к нужной базе данных как db2admin.
  3. Добавил мой вход в базу данных как пользователь.
  4. Предоставьте все полномочия этому идентификатору (мой идентификатор).
  5. Отключить.
  6. Подключитесь к нужной базе данных как мой идентификатор.
  7. Предоставьте все полномочия для db2admin.
  8. Отключить.

Вуаля! Вход в систему db2admin теперь как все полномочия.

РЕДАКТИРОВАТЬ:Я собираюсь оставить вышеизложенное, поскольку это помогло мне научиться делать некоторые интересные вещи в DB2. Однако я узнал, что полномочия DBADM / SECADM с полномочиями DATAACCESS и ACCESSCTRL, предоставленными владельцу экземпляра (в моем случае идентификатором db2admin), обладают всеми полномочиями, необходимыми для взаимодействия с базой данных. Я мог бы просто прокомментировать эти строки грантов выше в сценарии. Они были оставлены в скрипте, который работал с более старой версией DB2. Я также обнаружил, что если мне нужно иметь владельца экземпляра DBADM после восстановления базы данных A из базы данных B, проще всего установить для переменной реестра DB2_RESTORE_GRANT_ADMIN_AUTHORITY значение YES (доступно в Fix Pack 2 и выше). Тогда мне не нужно пытаться предоставить владельцу экземпляра DBADM. Это автоматически предоставляется для любой базы данных, восстановленной в экземпляре.

Крис Олдрич
источник
Не уверен, что вы подразумеваете под DB2 GUI. Есть ли версия командной строки, которую мы можем попробовать?
Вс
@ sunk818 - шаги будут одинаковыми даже для командной строки. Это больше связано с тем, как DB2 работает в отношении безопасности, начиная с версии 9.7.
Крис Олдрич
Моя проблема была связана с доступом SYSADM для создания базы данных ... Возможно, я посетил не тот вопрос. ;)
Вс
SYSADM всегда имеет возможность создать базу данных. Так же, как и SYSCTRL.
Крис Олдрич