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

Откуда:
Сообщений: 70
необходимо научиться добавлять нового пользователя на сервере AIX для того, чтобы он мог подключаться к базе, и имел ограниченное количество прав для работы с ней, например, только просмотр некоторых таблиц.
через консоль завожу нового пользователя и присоединяю его к определенной группе командой:
useradd -G <Group> -d /home/<UserName> -m <UserName>
passwd <Password>
далее, перезахожу в консоль под системным пользователем root и изменяю сеанс через команду su - <UserName>
но ничего не происходит.
если я пытаюсь через комманду su - зайти под другим пользователем, то мне предоставляется доступ к командам db2
подскажите, пожалуйста, где и что я делаю не так. Очень нужно. Спасибо!!
8 янв 19, 14:00    [21779864]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
попробовал выполнить через Toad
 GRANT ALL ON TABLE "Z_TEST".TABLE TO USER username;
и она сработала. но на этом все.
8 янв 19, 16:00    [21779960]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

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

Попробую угадать смысл фразы "но ничего не происходит".
Если это означает, что при вызове процессора командной строки DB2 (DB2 CLP) "db2" вам выдается ошибка, что такая команда не найдена, то это означает, что окружение db2 не инициализировано.
Вы можете это сделать либо вызовом команды ниже только для текущей сессии, либо вставив этот вызов в login скрипт этого пользователя (~<UserName>/.profile или ~<UserName>/.bashrc - в зависимости от shell пользователя <UserName>), чтобы этот вызов происходил автоматически при регистрации пользователя в системе.

. ~db2instance/sqllib/db2profile

Здесь db2instance - имя экземпляра db2, с базой которого пользователь должен работать.
Пробел между точкой и тильдой - обязателен.

Если я угадал смысл фразы неправильно, просьба ее расшифровать.
8 янв 19, 19:14    [21780054]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Верно, пишет о том, что команда не найдена.
Но ведь другой пользователь имеет доступ к команда, когда из системного профиля происходит переключение на него. Как это объяснить?
9 янв 19, 08:49    [21780256]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
И ещё...если возможно, подскажи, пожалуйста, как это протестировать? Сначала захожу под системным пользователем root -> далее ввожу bash -> а потом...? Пробовал гуглить, куда эту команду впихнуть, но не нашел... Мой пользователь, через которого я хочу получать доступ к базе - db2start.
9 янв 19, 09:03    [21780265]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
вывел юзеров. первый (db2start) - которого я создал, второй (dsadm) - существующий, которому доступны команды db2, есть переключаться на него из системного профиля:
db2start id=220 pgrp=staff groups=staff,db2ctrl home=/home/db2start shell=/usr/bin/ksh login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minloweralpha=0 minupperalpha=0 minother=0 mindigit=0 minspecialchar=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=-1 cpu=-1 data=-1 stack=-1 core=-1 rss=-1 nofiles=-1 time_last_login=1546944095 tty_last_login=/dev/pts/1 host_last_login=172.28.20.122 unsuccessful_login_count=0 roles=

dsadm id=208 pgrp=dstage groups=dstage,staff,db2ctrl home=/home/dsadm shell=/bin/ksh login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minloweralpha=0 minupperalpha=0 minother=0 mindigit=0 minspecialchar=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=-1 cpu=-1 data=-1 stack=-1 core=-1 rss=-1 nofiles=-1 time_last_login=1399018738 time_last_unsuccessful_login=1397714590 tty_last_login=/dev/pts/1 tty_last_unsuccessful_login=ssh host_last_login=192.168.106.116 host_last_unsuccessful_login=192.168.106.116 unsuccessful_login_count=21 roles=
9 янв 19, 10:16    [21780304]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
вывел юзеров. первый (db2start) - которого я создал, второй (dsadm) - существующий, которому доступны команды db2, есть переключаться на него из системного профиля:
db2start id=220 pgrp=staff groups=staff,db2ctrl home=/home/db2start shell=/usr/bin/ksh login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minloweralpha=0 minupperalpha=0 minother=0 mindigit=0 minspecialchar=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=-1 cpu=-1 data=-1 stack=-1 core=-1 rss=-1 nofiles=-1 time_last_login=1546944095 tty_last_login=/dev/pts/1 host_last_login=172.28.20.122 unsuccessful_login_count=0 roles=

dsadm id=208 pgrp=dstage groups=dstage,staff,db2ctrl home=/home/dsadm shell=/bin/ksh login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minloweralpha=0 minupperalpha=0 minother=0 mindigit=0 minspecialchar=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=-1 cpu=-1 data=-1 stack=-1 core=-1 rss=-1 nofiles=-1 time_last_login=1399018738 time_last_unsuccessful_login=1397714590 tty_last_login=/dev/pts/1 tty_last_unsuccessful_login=ssh host_last_login=192.168.106.116 host_last_unsuccessful_login=192.168.106.116 unsuccessful_login_count=21 roles=
У db2start - ksh shell. Это значит, что вызов, который я написал, надо вставить в файл ~db2start/.profile
Если у dsadm команды db2 работают, то вам надо в точности вставить такие же строки в этот файл, которые выдаются командой:
grep -p db2profile ~dasadm/.profile

Открыть на редактирование этот файл можно, например, командой:
vi ~db2start/.profile
9 янв 19, 10:32    [21780317]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Mark Barinstein,

Поправка:
grep -p db2profile ~dsadm/.profile
9 янв 19, 11:25    [21780371]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
предварительно создал чистого пользователя (mytusr), и добавил его во все Группы, в которых был пользователь dsadm.
провернул все действия, которые Вы указали, сравнил командой grep двух пользователей, получились идентичны.
на текущий момент получилось выполнить только одну db2-команду:
db2 list db directory

далее попробовал подключиться через команду db2 connect к базе, но появляется ошибка "SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001"
пробовал менять пароль через passwd, но ошибка не пропала при повторном коннекте.
9 янв 19, 12:01    [21780406]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
...
далее попробовал подключиться через команду db2 connect к базе, но появляется ошибка "SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001"
пробовал менять пароль через passwd, но ошибка не пропала при повторном коннекте.

Вы могли создать пользователя так, что ему требуется изменить пароль при первом входе в систему.
Проверка:
grep -p "^mytusr:" /etc/security/passwd | grep -p ADMCHG

В этом случае одно из:
- из-под root:
pwdadm -c mytusr
- из-под mytusr:
su - mytusr
9 янв 19, 12:52    [21780478]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
попробовал первую команду, и остальные 2 под разными пользователями - в ответ ничего не вывело(
9 янв 19, 13:34    [21780516]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
У этого экземпляра аутентификация точно в ОС, а не, скажем, в LDAP?
Если да, то:
Имя пользователя не более 8 символов и на нижнем регистре?
Можете этим пользователем зайти в систему, пройдя проверку пароля?
9 янв 19, 14:17    [21780566]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
может быть, проблема в другом, и я не совсем понимаю, что к чему?
если посмотреть в мою методичку, там есть одна задача связанная с загрузкой данных.
и там последовательно выполняется ряд действий:
3.	su – dsadm
4.	db2 list db directory 
5.	db2 connect to EQ_QGPL user kxd using pass


это говорит о том, что пользователь к базе и пользователь на сервере - это разные пользователи.
соответственно, мне и пишет ошибку, потому что захожу не под тем пользователем.
но я попытался выполнить запрос, в котором указал пользователя и пароль, под которым захожу в базу, и все равно ничего не вышло.
1.	su – mytusr
2.	db2 connect to TEST user db2in using pass


или я не верно рассуждаю?
9 янв 19, 14:38    [21780593]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
на Ваши вопросы ответ - да
login as: mytusr
mytusr@192.168.98.198's password:
bash-4.1$ uname -a
AIX AIX-DS 1 7 00C5BDD74C00
9 янв 19, 14:46    [21780607]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
получается, я все это время, по незнанию, вводил Вас по неправильной дороге.
думал, что этот пользователь должен быть один для всех, хотя сам видел, что в группах не было пользователя, которым я подключаюсь к базе через Toad. а мне как раз этот и нужен.
можете подсказать, как его создать можно?
9 янв 19, 14:58    [21780632]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

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

Для локальных соединений (с сервера):
Если вы указываете в команде 'db2 connect' имя пользователя, то неважно, каким вы пользователем заходите в систему.
Если вы не указываете в команде 'db2 connect' имя пользователя, то вы заходите в базу тем пользователем, которым зашли в ОС.

Для удаленных соединений вы обязательно должны указывать имя пользователя и его пароль, которые заведены там, где в этом экземпляре настроена аутентификация. У вас, как я понял, она в ОС, т.е. пользователь должен там быть заведен.

Я не понимаю, почему у вас при аутентификации в ОС, когда вы завели пользователя, можете успешно логиниться в ОС этим пользователем (не через su от root, где пароль не спрашивается), в db2 в ответ на соответствующий системный вызов возвращается ошибка о неправельном имени или пароле.
Группы пользователя здесь ни при чем - у вас не проходит проверка имени пользователя и его пароля.

Вы либо что-то не так делаете (например, как вы в первом письме написали, 'passwd <Password>' - это непонятно что; изменение пароля пользователя делается командой passwd <UserName>), либо у вас пользователи не в ОС аутентифицируются.

Вы когда делаете:
su – mytusr
То из под него работают ли команды ниже?
db2 connect to TEST
db2 connect to TEST user mytusr
9 янв 19, 15:21    [21780666]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
после первой команды ошибка - "SQL30082N Security processing failed with reason "3" ("PASSWORD MISSING")."
после второй - "SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001"
автор
например, как вы в первом письме написали, 'passwd <Password>' - это непонятно что

да, я не правильно написал, при такой записи выведет ошибку, что пользователь не найден. я пишу passwd newuser, а далее уже появляется новая строка с вводом пароля.
автор
либо у вас пользователи не в ОС аутентифицируются.

а как мне узнать? разве команда uname -a не дает ответ ?
9 янв 19, 15:42    [21780689]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

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

"SQL30082N Security processing failed with reason "3" ("PASSWORD MISSING")." в ответ на соединение без указания имени пользователя говорит о том, что вы обращаетесь к удаленной базе (находящейся либо на том же сервере, но зарегистрированной как удаленная, либо находящейся на другом сервере).

Дайте вывод команд:
db2 list db directory
db2 list node directory
db2 get dbm cfg | grep -i plugin
9 янв 19, 16:21    [21780761]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
1)
там их больше, так что одну скину:
Database 6 entry:

Database alias = T_D
Database name = BVEB_WH
Node name = TEST
Database release level = d.00
Comment =
Directory entry type = Remote
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =

2)
SQL0104N An unexpected token "directory" was found following "LIST". Expected tokens may include: "ACTIVE". SQLSTATE=42601

3)
Client Userid-Password Plugin (CLNT_PW_PLUGIN) =
Client Kerberos Plugin (CLNT_KRB_PLUGIN) =
Group Plugin (GROUP_PLUGIN) =
GSS Plugin for Local Authorization (LOCAL_GSSPLUGIN) =
Server Plugin Mode (SRV_PLUGIN_MODE) = UNFENCED
Server List of GSS Plugins (SRVCON_GSSPLUGIN_LIST) =
Server Userid-Password Plugin (SRVCON_PW_PLUGIN) =
9 янв 19, 16:35    [21780781]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
2) исправленный к п 1:

Node 5 entry:

Node name = TEST
Comment =
Directory entry type = LOCAL
Protocol = TCPIP
Hostname = 192.168.98.206
Service name = 60008
9 янв 19, 16:38    [21780784]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
У вас база зарегистрирована на хосте с 192.168.98.206:
AVRomanenko
Database 6 entry:

Database alias = T_D
Database name = BVEB_WH
Node name = TEST
...

Node 5 entry:

Node name = TEST
Comment =
Directory entry type = LOCAL
Protocol = TCPIP
Hostname = 192.168.98.206
Service name = 60008

Пользователя вы добавляете на хосте с 192.168.98.198, судя по:
AVRomanenko
login as: mytusr
mytusr@192.168.98.198's password:
bash-4.1$ uname -a
AIX AIX-DS 1 7 00C5BDD74C00

Так?
9 янв 19, 17:05    [21780837]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
да...
я уже перешел на .206 сервер, там завел нового пользователя, добавил в profile нужные строки, вызвал коннектор к базе, получилось, теперь пытаюсь добавить права к базе для пользователя:
db2 => GRANT CONNECT TO DATABASE T_D TO USER MYTUSR

но получаю ошибку:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL5193N The current session user does not have usage privilege on any
enabled workloads. SQLSTATE=42524
9 янв 19, 17:24    [21780865]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
...
но получаю ошибку:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL5193N The current session user does not have usage privilege on any
enabled workloads. SQLSTATE=42524

Почитайте, что пишется в выводе комнды:

db2 "? SQL5193N"
9 янв 19, 17:47    [21780910]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

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

Виноват:
Не:
GRANT CONNECT TO DATABASE T_D TO USER MYTUSR
а:
GRANT CONNECT ON DATABASE TO USER MYTUSR
9 янв 19, 17:49    [21780914]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
не получилось (
10 янв 19, 08:50    [21781233]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
с этим разобрался, ошибка появляется из-за того, что я пытаюсь выдать прапа пользователю тем же пользователем.
зашел под другим, и смог провести 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

Откуда: Москва
Сообщений: 4819
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

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

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

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

Откуда: Москва
Сообщений: 4819
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

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

Откуда:
Сообщений: 70
попробовал отдельно получить результаты по таблицам:
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

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

Откуда:
Сообщений: 70
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

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

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

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

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

Откуда: Москва
Сообщений: 4819
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

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

Откуда:
Сообщений: 70
выполнил запрос такой:
 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

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

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

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

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

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

Откуда:
Сообщений: 70
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

Откуда: Москва
Сообщений: 4819
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

Откуда:
Сообщений: 70
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

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

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

Откуда: Москва
Сообщений: 4819
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

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

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

Откуда:
Сообщений: 70
Mark Barinstein,
правильно я понимаю, что роль и группа имеют одинаковые свойства, только роль создается на уровне базы, а группа на уровне ОС?
с ролью разобрался, с группами как-то не совсем понимаю, как можно давать права на группу, чтобы пользователь состоя в этой группе получал доступ к базе.
и еще, для моего понимания, объясните, пожалуйста, доступ к группе открывает возможность работать с базой именно через консоль?
можно ли что-то сделать с тем, когда у нового пользователя нет изначально доступа к командам db2?
(при создании пользователя указать каталог useradd /home/db2inst1/sqllib/db2profile/<user> -m <user>, или я несу чушь? :) )
11 янв 19, 11:28    [21782566]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
правильно я понимаю, что роль и группа имеют одинаковые свойства, только роль создается на уровне базы, а группа на уровне ОС?
с ролью разобрался, с группами как-то не совсем понимаю, как можно давать права на группу, чтобы пользователь состоя в этой группе получал доступ к базе.
В DB2 проверка имени пользователя и его пароля, принадлежность пользователя к группам проверяется во внешнем источнике - там, где настроена аутентификация, с помощью соответствующих API вызовов. По-умолчанию - в ОС.
Внутри DB2 хранятся только гранты пользователей и групп на разные объекты. Причем эти имена в командах GRANT никак не проверяются во внешнем источнике и не синхронизируются с ним. Т.е. вы можете дать права несуществующему пользователю или группе, и это будет просто ненужная информация.
Когда пользователь обращается к таблице, то DB2 проверяет, имеет ли он такие права примерно в таком порядке:
- имеет ли этот пользователь права лично
- входит ли пользователь хотя бы в одну из групп, которым даны нужные права на таблицу (по системному каталогу DB2, где после каждого GRANT соотв. информация сохраняется); получение списка групп пользователя делается с помощью обращения через соотв. API во внешний источник, потом два списка сравниваются
- имеет ли пользователь права через роли, данные ему лично или одной из его групп
AVRomanenko
и еще, для моего понимания, объясните, пожалуйста, доступ к группе открывает возможность работать с базой именно через консоль?
можно ли что-то сделать с тем, когда у нового пользователя нет изначально доступа к командам db2?
(при создании пользователя указать каталог useradd /home/db2inst1/sqllib/db2profile/<user> -m <user>, или я несу чушь? :) )
Не надо в качестве домашнего каталога указывать подкаталог из домашнего каталога другого пользователя - так в unix не делают.
Пользователь создается как обычно, со своим собственным home.
Специльно для работы из консоли ни в какие дополнительные группы пользователя включать не обязательно.
Для работы через консоль от любого кользователя вы должны инициализировать соответствующие переменные окружения. Я уже писал, как это делается: вызовом команды ниже либо руками в сессии пользователя, либо в его login скрипте (здесь предполагается, что имя экзкмпляра db2 - db2inst1).
. ~db2inst1/sqllib/db2profile
11 янв 19, 13:59    [21782822]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
Вы писали
автор
удобно сделать одно из:
- создать роль, грантовать ей эти права, новому пользователю грантовать эту роль
- создать группу в ОС, грантовать ей эти права, нового пользователя включать в эту группу

это значит, что я могу использовать один из вариантов.
допустим, я выбрал второй вариант - я создал группу, но как мне дать гранты, например, на CONNECT TO DB? мне предлагают только раздавать права на роль
11 янв 19, 14:35    [21782871]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
...
допустим, я выбрал второй вариант - я создал группу, но как мне дать гранты, например, на CONNECT TO DB? мне предлагают только раздавать права на роль
Кто или что предлагают?

GRANT CONNECT ON DATABASE TO GROUP <MYGROUP>
11 янв 19, 14:46    [21782888]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein,
гуглил...и там не нашел подобного, только SQL-команды для новой ROLE, но я попробовал, и Ваш скрипт отлично работает...а еще, можно узнать, как смотреть экземпляр db2? допустим, здесь оказался db2inst1, а в др месте может быть другой, например?
11 янв 19, 15:33    [21782959]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
AVRomanenko
можно узнать, как смотреть экземпляр db2? допустим, здесь оказался db2inst1, а в др месте может быть другой, например?

На сервере может быть установлено несколько кодов db2, каждый из них может управлять несколькими экземплярами.
Вы можете получить все установленные коды с помощью вызова команды ниже, которая, как правило, является ссылкой на утилиту db2ls из-под какого-нибудь из этих кодов.
/usr/local/bin/db2ls

Из поля 'Install Path' берете любой путь, (пусть это, скажем, ${DB2DIR}) и:
${DB2DIR}/bin/db2greg -dump | grep '^I,DB2,'

Получаете список экземпляров с информацией о том, каким кодом DB2 каждый управляется.
Для того, чтоб начать работать с нужным экземпляром (скажем, db2inst), выполняете в сессии 2 команды (1-ю можно пропустить, если в этой сессии еще ни с одним экземпляром не работали):
db2 terminate
. ~db2inst/sqllib/db2profile
и можете начинать работать.
11 янв 19, 15:54    [21782980]     Ответить | Цитировать Сообщить модератору
 Re: Новый пользователь на сервер db2  [new]
AVRomanenko
Member

Откуда:
Сообщений: 70
Mark Barinstein, большое спасибо Вам! Очень выручили меня.
14 янв 19, 12:33    [21784626]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить