Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
с этим разобрался, ошибка появляется из-за того, что я пытаюсь выдать прапа пользователю тем же пользователем.
зашел под другим, и смог провести GRANT. выдал на connect, load on db, но при попытке войти под логином и паролем через Toad, выдает ошибку:
ERROR [42524] [IBM][DB2/AIX64] SQL0969N There is no message text corresponding to SQL error "-5193" in the message file on this workstation. The error was returned from module "SQLRW00C" with original tokens "". SQLSTATE=42524
открывает обозреватель, но выбрать и открыть ничего не могу. МОжет, нужно какие-то другие привилегии прописывать для пользователя ?
[img=]

К сообщению приложен файл. Размер - 9Kb
10 янв 19, 09:06    [21781257]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
...но при попытке войти под логином и паролем через Toad, выдает ошибку:
ERROR [42524] [IBM][DB2/AIX64] SQL0969N There is no message text corresponding to SQL error "-5193" in the message file on this workstation. The error was returned from module "SQLRW00C" with original tokens "". SQLSTATE=42524
открывает обозреватель, но выбрать и открыть ничего не могу. МОжет, нужно какие-то другие привилегии прописывать для пользователя ?
[img=]

Вы можете либо получать описание ошибок из командной строки, как я написал ранее, либо смотреть в документации.
SQL5193N
По этой ошибке смотрите Granting the USAGE privilege on a workload.
10 янв 19, 10:49    [21781339]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
посмотрел описание, там есть момент с workload, для которой должно быть предоставлено право использования.
и синтаксис:
 GRANT USAGE ON WORKLOAD <CAMPAIGN> TO USER <USER>   

так же написано, что SYSDEFAULTUSERWORKLOAD является рабочей нагрузкой по умолчанию.

Просто я побаиваюсь вводить такие команды, где нужно что-то включать или выключать. Подскажите, это безопасно, или нужно каким-то образом workload узнать?
10 янв 19, 11:15    [21781357]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
...
так же написано, что SYSDEFAULTUSERWORKLOAD является рабочей нагрузкой по умолчанию.

Просто я побаиваюсь вводить такие команды, где нужно что-то включать или выключать. Подскажите, это безопасно, или нужно каким-то образом workload узнать?

Вот все ваши workload'ы с информацией о том, включены они или нет:
select WORKLOADNAME, ENABLED from syscat.workloads;

Вот информация о том, какие привилегии имеет пользователь <USER> на workload'ы либо лично, либо через группы или роли:
SELECT  
  P.PRIVILEGE, P.OBJECTTYPE, P.OBJECTSCHEMA, P.OBJECTNAME
, U.AUTHID, U.AUTHIDTYPE
FROM SYSIBMADM.PRIVILEGES P
CROSS JOIN TABLE(VALUES '<USER>') A (AUTHID)
JOIN TABLE (
SELECT GROUP, 'G' FROM table(AUTH_LIST_GROUPS_FOR_AUTHID(A.AUTHID))
  UNION ALL
select ROLENAME, 'R' from table(AUTH_LIST_ROLES_FOR_AUTHID(A.AUTHID, 'U'))
  UNION ALL
SELECT * FROM TABLE(VALUES ('PUBLIC', 'G'), (A.AUTHID, 'U')) T (AUTHID, AUTHIDTYPE)
) U (AUTHID, AUTHIDTYPE) ON U.AUTHID=P.AUTHID AND U.AUTHIDTYPE=P.AUTHIDTYPE
WHERE P.OBJECTTYPE='WORKLOAD'
ORDER BY 2, 3, 4;

Насчет безопасно или нет что-то включать/выключать - спросите своего админа. У него могут быть свои соображения на этот счет.
10 янв 19, 12:05    [21781407]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
по первому запросу вывело: SYSDEFAULTUSERWORKLOAD и SYSDEFAULTADMWORKLOAD
а по второму пусто....
10 янв 19, 12:17    [21781422]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
попробовал отдельно получить результаты по таблицам:
AUTH_LIST_GROUPS_FOR_AUTHID
AUTH_LIST_ROLES_FOR_AUTHID
по первой получил: DASADM1, DWGRP, STAFF для уже имеющегося пользователя, STAFF для нового пользователя.
по второй таблице пусто ка обоих пользователей.
10 янв 19, 12:33    [21781443]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
по первому запросу вывело: SYSDEFAULTUSERWORKLOAD и SYSDEFAULTADMWORKLOAD
а по второму пусто....
Смысл запросов:
- 1-й показывает не только список workload'ов, но и доступны они для использования или нет (поле ENABLED)
- Если для какого-то пользователя 2-й запрос возвращает пусто или только workload'ы из первого запроса, у которых ENABLED='N', то пользовательская сессия (справедливо для пользователя, не имеющего WLMADM или DBADM в базе) не может быть ассоциирована ни с одним workload'ом (как для вашего нового пользователя)
10 янв 19, 12:59    [21781500]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
по первому запросу поле Enable = Y
правильно ли я понимаю, что мне теперь нужно сделать:
GRANT DBADM ON DATABASE TO MYTUSR

а потом:
GRANT USAGE ON WORKLOAD SYSDEFAULTUSERWORKLOAD TO USER MYTUSR

и для второго WORKLOAD аналогично, чтобы наконец я смог авторизоваться и работать с базой через Toad?
10 янв 19, 13:33    [21781569]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
...
правильно ли я понимаю, что мне теперь нужно сделать
...
чтобы наконец я смог авторизоваться и работать с базой через Toad
Для возможности ассоциации с workload'ом необязательно давать пользователю DBADM - это слишком широкие права.
Достаточно одно из:
- дать права пользователю на SYSDEFAULTUSERWORKLOAD
- найти / создать новый workload так, чтобы все его connection-attributes соответствовали атрибутам сессии, и дать пользователю права не него

Toad'у для нормальной работы могут понадобиться еще и права на чтения из представлений системного каталога, чтоб показывать вам всякие метаданные (списки и свойства объектов базы, например). Поэтому, могут понадобиться еще и права на представления схемы SYSCAT. Может еще что-то. Я не работаю с Toad и не знаю, что там ему еще надо...
10 янв 19, 14:20    [21781666]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
вышло!) выполнил вторую команду для workload
только вот что-то странное.
новому пользователю права на таблицы и схемы я не давал, только одну группу staff.
и в таблице SYSCAT.TABAUTH тоже нет ни одной строки с новым пользователем.
но у него сейчас есть полный доступ ко всем таблицам и схемам.
10 янв 19, 14:46    [21781690]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
из всех привилегий у пользователя только одна, на базу - GRANT CONNECT.
у меня предположение, что это или из-за группы staff, или из-за workload...
10 янв 19, 15:06    [21781716]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
из всех привилегий у пользователя только одна, на базу - GRANT CONNECT.
у меня предположение, что это или из-за группы staff, или из-за workload...
В db2 пользователь может иметь права на объект, если они выданы на группу или роль пользователя, а не только ему лично.
Немного модифицированный запрос, позволяющий понять, как именно данный пользователь (не имеющий DATAACCESS в базе, иначе он и без этого имеет rw права) получил права на представление в данном случае.
+ Права пользователя '<USER>' на view SYSCAT.TABLES

SELECT  
  P.PRIVILEGE, P.OBJECTTYPE, P.OBJECTSCHEMA, P.OBJECTNAME
, U.AUTHID, U.AUTHIDTYPE
FROM SYSIBMADM.PRIVILEGES P
CROSS JOIN TABLE(VALUES '<USER>') A (AUTHID)
JOIN TABLE (
SELECT GROUP, 'G' FROM table(AUTH_LIST_GROUPS_FOR_AUTHID(A.AUTHID))
  UNION ALL
select ROLENAME, 'R' from table(AUTH_LIST_ROLES_FOR_AUTHID(A.AUTHID, 'U'))
  UNION ALL
SELECT * FROM TABLE(VALUES ('PUBLIC', 'G'), (A.AUTHID, 'U')) T (AUTHID, AUTHIDTYPE)
) U (AUTHID, AUTHIDTYPE) ON U.AUTHID=P.AUTHID AND U.AUTHIDTYPE=P.AUTHIDTYPE
WHERE P.OBJECTSCHEMA = 'SYSCAT' AND P.OBJECTNAME='TABLES' 
--AND P.OBJECTTYPE='VIEW'
--AND P.PRIVILEGE='SELECT'
ORDER BY 2, 3, 4;
10 янв 19, 16:11    [21781832]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
почему-то ничего не вывело. пробовал и начальный запрос, и с добавление пользователя.
10 янв 19, 16:15    [21781841]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
выполнил запрос такой:
 SELECT * FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('MYTUSR', 'U') ) AS T 

получил выборку

К сообщению приложен файл. Размер - 23Kb
10 янв 19, 16:23    [21781859]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko,

Я ведь написал, что этот запрос есть смысл использовать, если у пользователя нет DATAACCESS на базу.
Согласно вашему запросу, у этого пользователя есть такие права, выданные ему лично.
10 янв 19, 16:37    [21781900]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
подскажите, что мне нужно сделать? я отозвал полномочия на dataaccess, и у меня выдает ошибку на это при подключении, логично.
но мне нужен доступ для этого пользователь только к одной таблице. я не понимаю, какие действия нужно выполнить (
grant на таблицу и схему не дали результатов.
10 янв 19, 16:50    [21781931]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko,

Просьба не писать о проблеме типа "и у меня выдает ошибку на это при подключении". По каждой проблеме желательно приводить саму команду и полное сообщение об ошибке.
Если это SQL5193N, то проверяйте права пользователя на workload'ы.
Если это SQL0551N, то проверяйте права пользователя на таблицу.
Оба запроса я уже привел.
Если выдаются пустые результаты, надо разбираться, почему вроде бы при выданных правах их нет на самом деле.
Если что-то другое - укажите, как я здесь попросил...
10 янв 19, 17:15    [21781963]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
извини за малую информативность. да, вторая ошибка была - SQL0551N "MYTUSR" does not have the required authorization or privilege to perform operation "EXECUTE" on object "NULLID.SYSSH200". но ничего нигде на находит. все скрипты перепробовал...
10 янв 19, 17:33    [21781989]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
...вторая ошибка была - SQL0551N "MYTUSR" does not have the required authorization or privilege to perform operation "EXECUTE" on object "NULLID.SYSSH200". но ничего нигде на находит. все скрипты перепробовал...
Это отсутствие прав на т.н. DB2 CLI пакеты.
В non-restrictive базе права их выполнять даются всем пользователям. У вас, видимо, нет.

Вы можете сгенерировать запросом команды выдачи прав вашему пользователю, а потом эти сгенерированные команды выполнить.
select 'GRANT EXECUTE ON PACKAGE "'||pkgschema||'"."'||pkgname||'" TO USER MYTUSR;'
from syscat.packages
where pkgschema='NULLID' and (pkgname like 'SYS%' or pkgname like 'SQLL9%');
10 янв 19, 18:19    [21782048]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein, доброе утро!! сделал, как Вы сказали, предварительно удалив DATAACCESS у нового пользователя.
появляются новые ошибки, сначала ругалось на SYSCAT.SCHEMATA, теперь так:
SQL0551N "MYTUSR" does not have the required authorization or privilege to perform operation "SELECT" on object "SYSIBM.SYSDUMMY1".
следовательно, нужно делать GRANT SELECT на все объекты, правильно? а можно получать их список, аналогично packages из вашего прошлого запроса?
11 янв 19, 09:31    [21782450]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
выполняю запрос:
list tables for SYSTEM

но мне выводит полный список, их там 646, но наверняка, их нужно меньше. или я вообще не туда рою?)
11 янв 19, 09:38    [21782457]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko,

Объектов разных в базе много, навряд ли вам надо прямо на все права давать.
Для инструментов типа Toad обычно достаточно дать права на представления в схеме SYSCAT + некоторые таблицы/представления в схеме SYSIBM (к ним обычно не рекомендуется обращаться за редким исключением типа SYSIBM.SYSDUMMY1) по необходимости.
Список таблиц и представлений в DB2 можно получить из SYSCAT.TABLES.
+ Генерация команд выдачи прав на чтение на представления схемы SYSCAT

select 'GRANT SELECT ON TABLE "'||tabschema||'"."'||tabname||'" TO USER MYTUSR;'
from syscat.tables
where 
tabschema='SYSCAT'
--tabschema in ('SYSCAT', 'SYSIBM')
;
11 янв 19, 10:18    [21782492]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein, как же сложно впервые это делать без знания и понимания....Вы очень сильно меня выручили снова, спасибо огромное.
Я получил список объектов SYSCAT, но решил пока не давать пользователю все права, пошагово получал список ошибок и давал привилегии по ним, по итогу, чтобы открыть таблицу, нужно было дать 6 привилегий, но понимаю, что есть еще индексы, модули, алиасы, функции и тд, которые хранятся в схеме, и чтобы был доступ к ним, все же нужно применять скрипт, который Вы давали последним. но на текущее состояния, мне кажется, что все выполнено успешно - у меня есть пользователь, который имеет доступ только к одной схеме и права только на таблицу в этой схеме.
буду пробовать создать нового пользователя на чистовую, и обязательно составлю методичку по этому)
11 янв 19, 10:50    [21782522]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4788
AVRomanenko
...
буду пробовать создать нового пользователя на чистовую, и обязательно составлю методичку по этому)
Если для новых пользователей нужен будет тот же набор прав или бОльшая его часть, то удобно сделать одно из:
- создать роль, грантовать ей эти права, новому пользователю грантовать эту роль
- создать группу в ОС, грантовать ей эти права, нового пользователя включать в эту группу
11 янв 19, 10:57    [21782536]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 42
Mark Barinstein,
правильно я понимаю, что роль и группа имеют одинаковые свойства, только роль создается на уровне базы, а группа на уровне ОС?
с ролью разобрался, с группами как-то не совсем понимаю, как можно давать права на группу, чтобы пользователь состоя в этой группе получал доступ к базе.
и еще, для моего понимания, объясните, пожалуйста, доступ к группе открывает возможность работать с базой именно через консоль?
можно ли что-то сделать с тем, когда у нового пользователя нет изначально доступа к командам db2?
(при создании пользователя указать каталог useradd /home/db2inst1/sqllib/db2profile/<user> -m <user>, или я несу чушь? :) )
11 янв 19, 11:28    [21782566]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить