Sql error 42501 ошибка нет доступа к схеме 您所在的位置:网站首页 42501db2 Sql error 42501 ошибка нет доступа к схеме

Sql error 42501 ошибка нет доступа к схеме

#Sql error 42501 ошибка нет доступа к схеме| 来源: 网络整理| 查看: 265

Я запускаю Postgres 10.4 и в настоящее время сбит с толку, поскольку не могу предоставить доступ к схеме другой роли.

Что я хочу сделать:

У меня одна роль с одной схемой, и я хочу получить доступ к схеме и ее таблицам из другой роли. Итак, я сделал как обычно (что работало с другими схемами):

grant usage on schema myschema to newuser; grant select on all tables in schema myschema to newuser;

Оба этих оператора выполнялись как владелец схемы. При этом я не столкнулся с какими-либо ошибками.

Когда я вхожу в систему как новый пользователь и пытаюсь выбрать некоторые данные:

select * from myschema.table;

Я получаю сообщение об ошибке:

SQL Error [42501]: ERROR: permission denied for schema myschema

Я вижу, что у нового пользователя есть нужные привилегии в таблице «information_schema.role_table_grants»

Он также работал с другой ролью и другой схемой. Я невежественен.

Комментарии (2)

Может быть, вы подключены к разным базам данных или разным машинам? dn+ myschema (запущенный из psql) дает одинаковый результат на обеих машинах? Можете добавить результат к вопросу?

DEV1-12. 19. Обзор разграничения доступа

Источник: reddeveloper.ru

Ошибка PostgreSQL 42501: разрешение отклонено для схемы

Я создаю систему регистрации пользователей в ASP.NET с базой данных PostgreSQL, чтобы поддерживать пользовательскую информацию. В рамках процесса регистрации пользователю отправляется подтверждающее сообщение, в котором они должны щелкнуть ссылку, чтобы подтвердить свой адрес электронной почты. Затем они переносят их на страницу, где они могут создать свой пароль.

После того как пользователь предоставит пароль, соответствующий некоторым основным критериям безопасности, веб-приложение запускает несколько хранимых процедур (функций) PostgreSQL, чтобы сначала создать роль пользователя в базе данных и поместить их в группу пользователей, а затем создать запись в базу данных с информацией о пользователе (имя и фамилия, адрес электронной почты и т.д.).

Первая из этих хранимых процедур – та, которая создает роль пользователя – выполняется просто отлично. Затем приложение отключается от базы данных и повторно подключается как вновь созданный пользователь для запуска второй хранимой процедуры для создания записи профиля. Тем не менее, это приложение не работает, возвращая вышеупомянутую ошибку 42501: Permission denied for schema.

Котел код ошибки 27

Я подтвердил, что группе пользователей, в которой создается новый пользователь, было предоставлено разрешение USAGE на схему и перешло все разрешения для каждого из затронутых объектов в базе данных (таблица профилей и хранимая процедура), и все выглядит правильно, но я не могу заставить свое веб-приложение создать новую запись профиля.

Для справки, вот две хранимые процедуры (отредактированы):

Погружение в SQL+vba — Курс | Урок 16 | Права Доступа и Перезапуск SQL Server | SQL+Excel

1) СОЗДАТЬ РОЛЬ ПОЛЬЗОВАТЕЛЯ БАЗЫ ДАННЫХ (это работает правильно, и пользователь создан)

CREATE OR REPLACE FUNCTION «SP_CreateUser»(«User» character varying, «Pass» character varying) RETURNS boolean AS $BODY$DECLARE success boolean; BEGIN EXECUTE ‘CREATE USER ‘ || quote_ident($1) || ‘ PASSWORD ‘ || quote_literal($2); EXECUTE ‘GRANT systemusers TO ‘ || quote_ident($1); SELECT pg_roles.rolname = $1 INTO success FROM pg_roles WHERE pg_roles.rolname = $1; RETURN success; END$BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER COST 100; ALTER FUNCTION «SP_CreateUser»(character varying, character varying) OWNER TO administrators; GRANT EXECUTE ON FUNCTION «SP_CreateUser»(character varying, character varying) TO administrators; GRANT EXECUTE ON FUNCTION «SP_CreateUser»(character varying, character varying) TO systemusers; REVOKE ALL ON FUNCTION «SP_CreateUser»(character varying, character varying) FROM public;

2) СОЗДАТЬ ЗАПИСЬ “ПРОФИЛЬ” (эта Error 42501 не выполняется с Error 42501 когда веб-приложение подключается к базе данных в качестве вновь созданного пользователя)

CREATE OR REPLACE FUNCTION website.»SP_CreateProfile»(«EmailAddress» character varying, «FirstName» character varying, «LastName» character varying, «PhoneNumber» character varying) RETURNS boolean AS $BODY$DECLARE success boolean; BEGIN INSERT INTO website.profiles («UserEmail», «FirstName», «LastName», «AdministrativeUser», «Active», «PhoneNumber») VALUES ($1, $2, $3, FALSE, TRUE, $4); SELECT p.»UserEmail» = $1 INTO success FROM website.profiles p WHERE p.»UserEmail» = $1; RETURN success; END$BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION website.»SP_CreateProfile»(character varying, character, character varying, character varying, character varying, character varying) OWNER TO administrators; GRANT EXECUTE ON FUNCTION website.»SP_CreateProfile»(character varying, character, character varying, character varying, character varying, character varying) TO administrators; GRANT EXECUTE ON FUNCTION website.»SP_CreateProfile»(character varying, character, character varying, character varying, character varying, character varying) TO systemusers; REVOKE ALL ON FUNCTION website.»SP_CreateProfile»(character varying, character, character varying, character varying, character varying, character varying) FROM public;

Arcanum of steamworks and magick obscura ошибка при установке unarc dll 1

Вы можете заметить, что я не установил вторую хранимую процедуру с SECURITY DEFINER . Это было намеренно, так как я бы предпочел, чтобы функция выполнялась с отдельными учетными данными безопасности. Тем не менее, в моем тестировании, даже если я включил SECURITY DEFINER , я все равно получаю ту же ошибку “отказа в разрешении”.

Итак, теперь вопрос заключается в следующем: что я пропускаю? Я чувствую, что я тестировал каждую перестановку настроек разрешений, но я, очевидно, пропустил что-то в этом процессе. Спасибо за вашу помощь.

Лучший ответ:

Кажется, я получил работу. Я просмотрел все настройки разрешений в схеме, за исключением того, что на этот раз я снова прошел через все “Привилегии по умолчанию”. Я установил, что группа “системные пользователи” имеет SELECT для таблиц и последовательностей, EXECUTE для функций и USAGE по типам. Когда я снова проверил, моя хранимая процедура выполнялась правильно и создала мою запись профиля в базе данных, как и ожидалось.

Поэтому, видимо, я пропустил что-то весьма важное. Даже со всеми индивидуальными настройками прав, которые я назначил для определенных объектов, эти привилегии по умолчанию все еще не были установлены так, как они должны были быть. Урок выучен.

Источник: techarks.ru

42501: НЕДОСТАТОЧНАЯ ОШИБКА ПРИВИЛЕГИИ во время запроса в Postgresql

Я пытаюсь запросить таблицу базы данных в postgresql, но каждый раз, когда я запускаю приведенный ниже запрос, он выдает мне сообщение INSUFFICIENT PRIVILEGE. В чем, возможно, может быть причина такого разрешения, отказано в ошибке. Также я использую инструмент pgadmin в Windows для подключения к базе данных, которая находится в среде Linux. Ниже приведен запрос, который я выполняю

> > SELECT appid,hash > FROM app > WHERE appid=1;

При выполнении того же запроса я получаю сообщение об ошибке ниже

ERROR: permission denied for relation app ********** Error ********** ERROR: permission denied for relation app SQL state: 42501 user819916 12 авг ’13 в 17:53 2013-08-12 17:53 2013-08-12 17:53

3 ответа

Пользователю, выполняющему запрос, потребуются разрешения на эту таблицу. Вы можете предоставить их этому пользователю с помощью инструкции GRANT. Ниже приведен пример, который предоставляет PUBLIC

Sp3 Windows xp ошибка

GRANT SELECT ON tablename TO PUBLIC;

Также я видел, как SELinux вызывает иссы и такие места, как здесь, об этом упоминают. Я не совсем уверен, что команда отключит SELinux, но вы можете увидеть, работает ли он, используя

selinuxenabled echo enabled || echo disabled user750711 12 авг ’13 в 17:58 2013-08-12 17:58 2013-08-12 17:58

Это просто означает, что у вас нет прав доступа к таблице приложения. Запросите у администратора root или базы данных разрешение на доступ к таблице приложений. если вы являетесь пользователем root или у вас есть привилегия предоставления, вы можете использовать команду grant, чтобы предоставить себе разрешение на использование всех операторов SQL в таблице или базе данных.Например:

grant all privileges on database money to cashier;

перед этим вы должны войти в систему как пользователь root или пользователь, который имеет привилегииДля получения более подробной информации об этой команде см. http://www.postgresql.org/docs/8.1/static/sql-grant.html

user2669708 12 авг ’13 в 18:12 2013-08-12 18:12 2013-08-12 18:12

Если это DB2, перейдите в командную консоль DB2, выберите соответствующую базу данных и выберите опцию Authorities, щелкнув правой кнопкой мыши на базе данных, затем добавьте соответствующего пользователя DB2 и предоставьте необходимый доступ.

user6663265 01 авг ’16 в 12:20 2016-08-01 12:20 2016-08-01 12:20

Вам необходимо убедиться, что пользователь, с которым вы подключаетесь, также имеет доступ «USAGE» к схеме, к которой вы пытаетесь получить доступ с пользователем. Недавно я столкнулся с ошибкой, когда я восстановил дамп в базе данных, а затем у меня было несколько пользователей, которым я должен был предоставить доступ только для чтения. Я выполнил следующие шаги —

CREATE ROLE myapp_readonly; GRANT CONNECT ON DATABASE TO myapp_readonly; GRANT USAGE ON SCHEMA TO myapp_readonly; GRANT SELECT ON TABLE . TO myapp_readonly; GRANT myapp_readonly TO ;

После выполнения этих шагов, когда я попытался получить доступ к таблице, получил следующую ошибку:

SQL Error [42501]: ERROR: permission denied for schema

В моем случае мои пользователи уже были доступны, а схемы и база данных были недавно восстановлены. После того как я предоставил пользователю доступ к схеме «ИСПОЛЬЗОВАНИЕ», ошибка была устранена.

Источник: stackru.com



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有