postgresql - postgres - Permiso denegado por relación
permission denied for database postgres (8)
Intenté ejecutar el comando sql simple:
select * from site_adzone;
y tengo este error
ERROR: permission denied for relation site_adzone
Cual podría ser el problema aquí?
Intenté también seleccionar para otras tablas y obtuve el mismo problema. También traté de hacer esto:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
pero tengo esta respuesta de la consola
WARNING: no privileges were granted for "jerry"
¿Tienes alguna idea de lo que puede estar mal?
1er e importante paso es conectar a tu db:
psql -d yourDBName
2 pasos, otorgar privilegios
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;
Asegúrese de iniciar sesión en psql como propietario de las tablas. para averiguar quién es el propietario de las tablas /dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
entonces usted puede ejecutar las subvenciones
Esto sucede con frecuencia cuando crea una tabla como usuario postgres y luego intenta acceder a ella como un usuario normal. En este caso, es mejor volver a iniciar sesión como postgres y usar ALTER TABLE OWNER TO someuser para cambiar la propiedad de la tabla al usuario que usará la tabla.
GRANT en la base de datos no es lo que necesitas. Subvención en las mesas directamente.
La concesión de privilegios en la base de datos se utiliza principalmente para otorgar o revocar privilegios de conexión. Esto le permite especificar quién puede hacer cosas en la base de datos si tienen suficientes otros permisos.
Tú quieres en cambio:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;
Esto se hará cargo de este problema.
Para otorgar permisos a todas las tablas existentes en el esquema use:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role>
Para especificar los permisos predeterminados que se aplicarán a las tablas futuras, use:
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema>
GRANT <privileges> ON TABLES TO <role>;
p.ej
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin;
Si utiliza las columnas SERIAL
o BIGSERIAL
, probablemente querrá hacer lo mismo con las SEQUENCES
, o su INSERT
fallará ( la IDENTITY
Postgres 10 no sufre ese problema y se recomienda sobre los tipos SERIAL
), es decir
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;
Vea también mi respuesta a los permisos de PostgreSQL para aplicaciones web para obtener más detalles y un script reutilizable.
Árbitro:
Publicar la respuesta de Ron E para otorgar privilegios en todas las tablas, ya que puede ser útil para otros.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
Conéctese primero a la base de datos correcta , luego ejecute:
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 SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;