Отказано в разрешении на связь
Я попытался запустить простую команду SQL:
select * from site_adzone;
и я получил эту ошибку
ERROR: permission denied for relation site_adzone
в чем может быть проблема здесь?
Я попытался также сделать выбор для других таблиц и получил ту же проблему. Я тоже пытался это сделать:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
но я получил этот ответ от консоли
WARNING: no privileges were granted for "jerry"
у вас есть какие-то идеи, что может быть не так?
8 ответов:
грант на базе данных-это не то, что вам нужно. Грант на столах прямо.
предоставление привилегий в базе данных в основном используется для предоставления или отмены привилегий подключения. Это позволяет указать, кто может делать вещи в базе данных, если у них есть достаточные другие разрешения.
вам нужно:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;Это позволит решить эту проблему.
публикация ответа Ron E для предоставления привилегий во всех таблицах, поскольку это может быть полезно для других.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
сначала подключитесь к правой базе данных, затем запустите:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
чтобы предоставить разрешения для всех существующих таблиц в схеме используйте:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role>чтобы указать разрешения по умолчанию, которые будут применяться к будущим таблицам, используйте:
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT <privileges> ON TABLES TO <role>;например
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin;если вы используете
SERIALилиBIGSERIALстолбцы, то вы, вероятно, захотите сделать то же самое дляSEQUENCES, либоINSERTбудет выполнена (Postgres 10'sIDENTITYне страдает от этой проблемы, и рекомендуется надSERIALтипы), то естьALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;Смотрите также мой ответ на разрешения PostgreSQL для веб-приложения для получения более подробной информации и многоразового сценария.
Ref:
1 и важно шаг подключения к БД:
psql -d yourDBName2 шаг, предоставить привилегии
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;
убедитесь, что вы входите в psql как владелец таблиц. чтобы узнать, кто владеет таблицами, используйте
\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLESтогда вы можете запустить гранты
это часто происходит, когда вы создаете таблицу как пользователь postgres, а затем пытаетесь получить к ней доступ как обычный пользователь. В этом случае лучше всего снова войти в систему как postgres и использовать ALTER TABLE OWNER для someuser, чтобы изменить владельца таблицы на пользователя, который будет использовать таблицу.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry; GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;
Comments