Traté de ejecutar el comando sql simple:
select * from site_adzone;
y recibí 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 intenté hacer esto:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
pero recibí esta respuesta de la consola
WARNING: no privileges were granted for "jerry"
¿Tienes alguna idea de lo que puede estar mal?
Respuestas:
GRANT en la base de datos no es lo que necesita. Conceder en las mesas directamente.
La concesión de privilegios en la base de datos se usa 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 otros permisos suficientes.
Usted quiere en cambio:
Esto se encargará de este problema.
fuente
Publicar la respuesta de Ron E para otorgar privilegios en todas las tablas ya que podría ser útil para otros.
fuente
ALL SEQUENCES
yALL FUNCTIONS
.ALL TABLES
también incluye vistas, por lo que no hay unALL VIEWS
comando separado :-)Conéctese primero a la base de datos correcta , luego ejecute:
fuente
\connect databasename;
fuente
El primer paso importante es conectarse a su base de datos:
2 pasos, otorgue privilegios
fuente
Para otorgar permisos a todas las tablas existentes en el esquema, use:
Para especificar los permisos predeterminados que se aplicarán a las tablas futuras, use:
p.ej
Si usa
SERIAL
oBIGSERIAL
columnas, entonces probablemente querrá hacer lo mismoSEQUENCES
, o de lo contrarioINSERT
fallará ( Postgres 10IDENTITY
no sufre ese problema, y se recomienda sobre losSERIAL
tipos), es decirConsulte también mi respuesta a los permisos de PostgreSQL para la aplicación web para obtener más detalles y un script reutilizable.
Árbitro:
CONCEDER
ALTERAR PRIVILEGIOS POR DEFECTO
fuente
Esto sucede con frecuencia cuando crea una tabla como postgres de usuario y luego intenta acceder a ella como un usuario normal. En este caso, es mejor iniciar sesión como usuario de postgres y cambiar la propiedad de la tabla con el comando:
fuente
Asegúrese de iniciar sesión en psql como propietario de las tablas. para saber quién es el dueño de las mesas usa
\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
entonces puedes ejecutar las SUBVENCIONES
fuente
Como está buscando permisos de selección, le sugiero que otorgue solo privilegios de selección en lugar de todos. Puedes hacer esto:
fuente
Debieras:
fuente
Me enfrenté a este problema una vez. simplemente cambie el usuario de la base de datos a un superusuario y su problema se resolverá.
ALTERAR USUARIO myuser CON SUPERUSUARIO;
fuente