powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу выдать права на таблицу. (нетипичное поведение postgresql)
19 сообщений из 19, страница 1 из 1
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757196
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаю пользователя:

Код: sql
1.
CREATE ROLE my_user LOGIN PASSWORD 'my_user' NOSUPERUSER NOCREATEDB NOCREATEROLE NOREPLICATION; 





Выдаю ему права:

Код: sql
1.
GRANT SELECT ON ALL TABLES IN SCHEMA public TO user my_user; 






Но при обращении к любой таблице в БД, в которой выдал права:


Код: sql
1.
SELECT * FROM my_table;




Ошибка:

ОШИБКА: отношение "my_table" не существует
LINE 1: SELECT * FROM my_table;
********** Ошибка **********
ОШИБКА: отношение "my_table" не существует
SQL-состояние: 42P01
Символ: 15




При явной выдаче прав:
Код: sql
1.
GRANT SELECT ON my_table TO user my_user; 


Та же ошибка.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757197
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое наблюдается только на одном из нескольких серверов.

Т.е. синтаксис создания на других серверах отрабатывает и права появляются.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757211
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

Потому что таблица My_table. И смотреть ее как select * from "My_table".
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757226
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPСиний Слон,

Потому что таблица My_table. И смотреть ее как select * from "My_table".


не, таблица из маленьких букв.

да и это ко ВСЕМ таблицам в БД относится.

С любой такая же ошибка.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757230
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

Код: sql
1.
2.
3.
SET search_path = my_schema, "$user", public; -- For current session only

ALTER ROLE your_role SET search_path = my_schema, "$user", public; -- Persistent, for role



Вот отсюда .
То есть роль может быть совсем не public...
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757232
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под postgres:

Код: sql
1.
2.
3.
4.
create table my_1(id int);
GRANT SELECT ON my_1 TO my_user; 

Запрос успешно выполнен без возвращаемых данных за 64 мс.





под my_user:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT * FROM my_1



ОШИБКА:  отношение "my_1" не существует
LINE 1: SELECT * FROM my_1
                      ^
********** Ошибка **********

ОШИБКА: отношение "my_1" не существует
SQL-состояние: 42P01
Символ: 15
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757236
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPСиний Слон,

Код: sql
1.
2.
3.
SET search_path = my_schema, "$user", public; -- For current session only

ALTER ROLE your_role SET search_path = my_schema, "$user", public; -- Persistent, for role



Вот отсюда .
То есть роль может быть совсем не public...


схема точно public


SELECT * FROM pg_tables WHERE tablename='my_1'

"public";"my_1";"postgres";"";f;f;f
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757238
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

"под my_user" - а Вы уверены, что пользователь "my_user" находится в роли, для которой определена схема public?
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757239
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слонсхема точно public


SELECT * FROM pg_tables WHERE tablename='my_1'

"public";"my_1";"postgres";"";f;f;f
Для таблицы - да. Но не для пользователя, под которым Вы ищете эту таблицу.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757259
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPСиний Слонсхема точно public


SELECT * FROM pg_tables WHERE tablename='my_1'

"public";"my_1";"postgres";"";f;f;f
Для таблицы - да. Но не для пользователя, под которым Вы ищете эту таблицу.

Указал явно схему:

Код: sql
1.
SELECT * FROM public.my_1




Говорит нет доступа к схеме public:

ОШИБКА: нет доступа к схеме public
LINE 1: SELECT * FROM public.my_1
^
********** Ошибка **********

ОШИБКА: нет доступа к схеме public
SQL-состояние: 42501
Символ: 15




Подскажите, как это исправить?

Такая проблема только в одной БД, на других БД того же сервера доступ есть.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757270
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий СлонОШИБКА: нет доступа к схеме public
SQL-состояние: 42501
Символ: 15




Подскажите, как это исправить?

Попробуйте для начала прочитать статью про схему public .
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757273
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

Код: sql
1.
GRANT SELECT ON ALL TABLES IN SCHEMA public TO user my_user



Попробуйте осмыслить, зачем иногда делают так:
Код: plsql
1.
2.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO my_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO my_user;
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757276
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

И попробуйте подумать над таким вариантом:
Код: plsql
1.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO my_user;
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757281
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPСиний СлонОШИБКА: нет доступа к схеме public
SQL-состояние: 42501
Символ: 15




Подскажите, как это исправить?

Попробуйте для начала прочитать статью про схему public .


Прочел.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757282
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPСиний Слон,

И попробуйте подумать над таким вариантом:
Код: plsql
1.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO my_user;



Такое использую, но не с ним не без него в ОДНОЙ БД не работает.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757294
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,
Код: sql
1.
postgres=# GRANT USAGE ON SCHEMA public TO my_user;
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757297
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий СлонAndy_OLAPСиний Слон,

И попробуйте подумать над таким вариантом:
Код: plsql
1.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO my_user;



Такое использую, но не с ним не без него в ОДНОЙ БД не работает.
Значит, в этой конкретной БД роль public изменена кривыми руками. Ищите того, кто это сделал.
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757298
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЛузановСиний Слон,
Код: sql
1.
postgres=# GRANT USAGE ON SCHEMA public TO my_user;



не, так не работало.




Оказывается вот так надо было:

GRANT ALL ON SCHEMA public TO public;

хотя это наверное в плане безопасности очень очень плохо...



Andy_OLAP, Павел Лузанов, благодарю за помощь!!!
...
Рейтинг: 0 / 0
Не могу выдать права на таблицу. (нетипичное поведение postgresql)
    #39757299
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синий Слон,

GRANT ALL для схему выдает привилегии USAGE и CREATE.
Для того, чтобы только читать из таблиц привилегии USAGE вполне достаточно.
Раз вам помогает только ALL значит пытаетесь еще и создавать/изменять объекты в схеме public.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу выдать права на таблицу. (нетипичное поведение postgresql)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]