He ejecutado el siguiente SQL en 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
);
Cuando inicio sesión como bspu
e intento consultar la users
tabla, aparece el error:
permission denied for relation users
Traté de correr:
ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO bspu;
Pero no ayuda. ¿Qué estoy haciendo mal? ¿Por qué el propietario de la base de datos NO tiene permisos para consultar su propia base de datos?
EDITAR: Actualicé bspu
a superusuario por ahora, para que pueda continuar trabajando. Cualquier otra orientación apreciada.
postgresql
permissions
si __nombre__ es Ninguno
fuente
fuente
\dt "users"
muestra el resultado de mostrar?SELECT session_user, current_user
en la parte superior de tu guión? ¿Y cuál es tu versión de Postgres?Respuestas:
DEFAULT PRIVILEGES
no no cambiar los permisos para existentes objetos. Son los privilegios predeterminados para los objetos recién creados y solo para el rol particular al que pertenecen. Si no define el rol cuando se ejecutaALTER DEFAULT PRIVILEGES
, el valor predeterminado es el rol actual (al ejecutar laALTER DEFAULT PRIVILEGES
instrucción).Además, dado que está utilizando una
serial
columna, que crea unSEQUENCE
, también querrá establecer privilegios predeterminados para secuencias.Ejecute esto en el usuario con el que crea objetos, antes de ejecutar el
CREATE
comando:Si debe usar pgAdmin, una palabra de precaución. Hay un error en la versión actual 1.20 (o anterior) en la pantalla del script SQL de ingeniería inversa para
DEFAULT PRIVILEGES
. La pantalla ignora al usuario propietario y, por lo tanto, es incorrecta en ciertas situaciones. Informé el error, el asunto está pendiente .Para los objetos existentes también puede estar interesado en esta forma "por lotes" del
GRANT
comando :Más bajo esta pregunta relacionada sobre SO:
fuente
fuente