Я попытался запустить простую команду 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"
У вас есть идея, что может быть не так?
Ответы:
GRANT в базе данных не то, что вам нужно. Грант на столы напрямую.
Предоставление привилегий в базе данных в основном используется для предоставления или отзыва привилегий подключения. Это позволяет вам указать, кто может что-то делать в базе данных, если у них достаточно других разрешений.
Вы хотите вместо этого:
Это позаботится об этой проблеме.
источник
Размещение ответа Ron E для предоставления привилегий во всех таблицах, поскольку это может быть полезно для других.
источник
ALL SEQUENCES
иALL FUNCTIONS
.ALL TABLES
также включены представления, поэтому нет отдельнойALL VIEWS
команды :-)Сначала подключитесь к нужной базе данных , затем запустите:
источник
\connect databasename;
источник
1-й и важный шаг - подключитесь к вашей БД:
2 шаг, предоставить привилегии
источник
Чтобы предоставить разрешения всем существующим таблицам в схеме, используйте:
Чтобы указать разрешения по умолчанию, которые будут применяться к будущим таблицам, используйте:
например
Если вы используете
SERIAL
илиBIGSERIAL
столбцы, то вы, вероятно, захотите сделать то же самоеSEQUENCES
, иначе вашINSERT
сбой ( Postgres 10IDENTITY
не страдает от этой проблемы, и рекомендуется дляSERIAL
типов), т.е.См. Также мой ответ на PostgreSQL Permissions for Web App для получения более подробной информации и сценария для повторного использования.
Ref:
ГРАНТ
ALTER DEFAULT PRIVILEGES
источник
Это часто происходит, когда вы создаете таблицу как пользователь postgres, а затем пытаетесь получить к ней доступ как обычный пользователь. В этом случае лучше всего войти в систему как пользователь postgres и изменить владельца таблицы с помощью команды:
источник
Убедитесь, что вы вошли в psql как владелец таблиц. выяснить, кому принадлежат таблицы
\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
тогда вы можете запустить гранты
источник
Поскольку вы ищете разрешения для выбора, я бы посоветовал вам предоставить только права выбора, а не все. Вы можете сделать это:
источник
Вам следует:
источник
Я сталкивался с этой проблемой однажды. просто измените пользователя базы данных на суперпользователя, и ваша проблема решена.
ALTER USER myuser С SUPERUSER;
источник