Я запустил следующий SQL в PSQL:
CREATE USER bspu LOGIN;
CREATE DATABASE bsp OWNER bspu;
GRANT ALL PRIVILEGES ON DATABASE bsp TO bspu;
\c bsp
CREATE TABLE users (
id SERIAL PRIMARY KEY,
client_id VARCHAR(20) NOT NULL,
api_key VARCHAR(100) NOT NULL,
api_secret VARCHAR(100) NOT NULL,
auth_token VARCHAR(128) NOT NULL
);
Когда я вхожу в систему bspu
и пытаюсь запросить users
таблицу, я получаю сообщение об ошибке:
permission denied for relation users
Я попытался запустить:
ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO bspu;
Но это не помогает. Что я делаю неправильно? Почему владелец базы данных НЕ имеет разрешения запрашивать собственную базу данных?
РЕДАКТИРОВАТЬ: Я обновился bspu
до суперпользователя, чтобы я мог продолжить работу. Любое дальнейшее руководство приветствуется.
postgresql
permissions
если __name__ Нет
источник
источник
\dt "users"
показывает выход шоу?SELECT session_user, current_user
в верхней части вашего сценария? А какая у тебя версия Postgres?Ответы:
DEFAULT PRIVILEGES
ничего не изменить разрешения для существующих объектов. Они являются привилегиями по умолчанию для вновь создаваемых объектов и только для конкретной роли, к которой они принадлежат. Если вы не определили роль при запускеALTER DEFAULT PRIVILEGES
, по умолчанию используется текущая роль (при выполненииALTER DEFAULT PRIVILEGES
оператора.Кроме того, так как вы используете
serial
столбец, который создаетSEQUENCE
, вы захотите установить привилегии по умолчанию для последовательностей.Запустите это для пользователя, с которым вы создаете объекты, перед тем как запустить
CREATE
команду:Если вы должны использовать pgAdmin, предостережение. В текущей версии 1.20 (или более ранней) есть ошибка в отображении обратного сценария SQL для
DEFAULT PRIVILEGES
. Дисплей игнорирует пользователя-владельца и поэтому некорректен в определенных ситуациях. Я сообщил об ошибке, дело находится на рассмотрении .Для существующих объектов вас также может заинтересовать эта «пакетная» форма
GRANT
команды :Больше под этим связанным вопросом на SO:
источник
источник