вторник, 12 мая 2015 г.

DB2 – добавляем права на базу при отсутствии DBADM\SECADM-пользователей (решение для Windows-систем)

Наткнулся недавно на ситуацию, когда в БД DB2 отсутствовали пользователи с правами DBADM. База при этом работала нормально, проблема обнаружилась только тогда, когда я попытался сконфигурировать автоматическое обслуживание базы — оказалось, что у пользователя, который считался «админским», никаких «админских» прав не было (соответственно, прав на конфигурирование автоматического обслуживания тоже не было).

Как оказалось, в DB2 базы могут создаваться как из-под обычных пользователей, так и с использованием пользователя SYSTEM, который олицетворяет операционную систему. В данном случае база была создана именно системным пользователем, соответственно только у него были роли DBADM и SECADM, и только он мог жаловать эти роли другим пользователям.
Чтобы дать права пользователям на базу, доступ к которой есть только у SYSTEM, нужно проделать следующее:
 - в командной строке написать
at hh:mm /interactive "...\SQLLIB\bin\db2cmd.exe"
(hh:mm – ближайшее время). Создастся задание планировщика на запуск консоли (под системным пользователем)
- когда появится окно административной консоли, ввести:
db2 connect to dbname
db2 grant dbadm, secadm on database to user username
db2 connect reset

После этого выйти из консоли. У пользователя username должны будут появиться права  SECADM и DBADM.
Работает по крайней мере для DB2 9.7fp6.

Комментариев нет:

Отправить комментарий