Отказано в разрешении на связь



Я попытался запустить простую команду 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"


у вас есть какие-то идеи, что может быть не так?

642   8  

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's IDENTITY не страдает от этой проблемы, и рекомендуется над SERIAL типы), то есть

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;

Смотрите также мой ответ на разрешения PostgreSQL для веб-приложения для получения более подробной информации и многоразового сценария.

Ref:

грант

ИЗМЕНИТЬ ПРИВИЛЕГИИ ПО УМОЛЧАНИЮ

1 и важно шаг подключения к БД:

psql -d yourDBName

2 шаг, предоставить привилегии

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

    Ничего не найдено.