DB2 SYSADM Windows - НЕ УДАЧИ - PullRequest
       4

DB2 SYSADM Windows - НЕ УДАЧИ

0 голосов
/ 02 января 2019

Я установил DB2 10.5 Enterprise Edition на сервере Windows 2012, но не могу получить доступ к SYSADM ни с чем.Я также восстановил базу данных DB2, взятую с аналогичного сервера, на новый, но не могу получить разрешения SYSADM для просмотра данных.Новая установка была установлена ​​с учетной записью домена в качестве владельца экземпляра, а 2 локальные группы (DB2ADMNS и DB2USERS) были созданы с владельцем экземпляра и учетными записями администратора, добавленными в группу DB2ADMNS.Что бы я ни делал, я не могу просматривать данные в базе данных, которую я восстановил, ни с одним из членов группы DB2ADMNS (локальной или доменной).Я настроил SYSADM_GROUP для DB2ADMNS и глобальный реестр для DB2_GRP_LOOKUP = локальный, но все равно не повезло.Я перезапускал DB2 каждый раз, когда вносил изменения или выходил из системы, но все равно не повезло.

Чего мне не хватает, чтобы получить доступ SYSADM к DB2 хотя бы через учетную запись владельца экземпляра?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Полномочия SYSADM (начиная с 9.7) в DB2 не обязательно позволяют пользователю «просматривать данные», как было отмечено @Ian Bjorhovde.

select * 
from table(auth_list_authorities_for_authid('YOUR_ACCOUNT', 'U')) 
where authority in ('SYSADM', 'DBADM', 'DATAACCESS');

AUTHORITY  D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE 
---------- ------ ------- -------- --------- ---------- ----------- ------ 
SYSADM          *       Y        *         *          *           *      * 
DBADM           N       N        N         N          N           N      * 
DATAACCESS      N       N        N         N          N           N      *

Согласно результатам этого запроса, вашYOUR_ACCOUNT пользователь имеет полномочия SYSADM, но не имеет полномочий DBADM или DATAACCESS в базе данных.Это, вероятно, означает, что вы получаете ошибки SQL0551N при различных попытках доступа к данным.Если вы хотите получить доступ к DBADM / SECADM для этого пользователя, вы можете:

  • использовать переменную реестра DB2_RESTORE_GRANT_ADMIN_AUTHORITIES до того, как команда RESTORE DATABASE
  • предоставит эти полномочия вашему пользователю от другого пользователяпользователь с полномочиями SECADM (запросите таблицу SYSCAT.DBAUTH, чтобы получить его)
0 голосов
/ 02 января 2019

Чтобы восстановить, удалите восстановленные базы данных, затем попробуйте следующее.

Прежде чем выполнить ВОССТАНОВЛЕНИЕ базы данных, вы должны сначала выполнить (в окне администратора db2cmd) следующие команды:

db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=ON
db2stop force
db2start

Убедитесь, что все команды выполнены успешно. Повторите попытку восстановления и проверьте, какие права у вас есть.

Это задокументировано .

Если после выполнения вышеуказанного у вас все еще возникают проблемы, вам нужно РЕДАКТИРОВАТЬ свой вопрос, чтобы отобразить в точности все команды и результаты, старые и новые имена экземпляров, записи syscat.dbauth для них обоих и дополнительно показать вывод db2set -all, а также точные сообщения, которые появляются в db2diag.log, когда учетная запись владельца экземпляра пытается получить доступ к данным.

Во многих случаях простое изучение содержимого syscat.dbauth покажет проблему, как только вы подключитесь к базе данных, и в этом представлении будет выбрано PUBLIC. Пользователи, имеющие DATAACCESS, должны иметь возможность подключаться к базе данных в новой среде, поэтому в среде домена DB2_GRP_LOOKUP должна совпадать с исходным Db2-сервером. Если в syscat.dbauth имеется большое количество строк, вы можете выполнить фильтрацию с помощью SQL следующим образом: SELECT * FROM TABLE (SYSPROC.AUTH_LIST_GROUPS_FOR_AUTHID ('YOUR_ACCOUNT')) AS T

...