Un cliente desarrolla aplicaciones web con Django y al hacer el deploy de su aplicación y crear las tablas en la base de datos Postgresql versión 15 (migrations) le lanzaba el siguiente error:
“… (permission denied for schema public LINE 1: CREATE TABLE ….”
Al usuario de conexión a la base de datos se le habían asignado todos los permisos o privilegios sobre la base de datos que regularmente el cliente asignaba en anteriores instalaciones con éxito donde la instalación había funcionado sin problemas.
La diferencia con las instalaciones anteriores era la versión del Postgresql, lo había hecho en versiones 14 o anteriores de este motor de base de datos. Revisando la documentación de la versión 15 se encontró que el permiso de creación en al esquema PUBLIC ya no es público por lo que hay que darle el permiso explícito al usuario. Sólo el propietario de la base de datos tiene por defecto el permiso de creación en el esquema PUBLIC. El cliente había creado la base de datos con el usuario administrador postgres, por lo tanto el propietario por defecto era el usuario postgres. Una solución para corregir este error es hacer, al usuario de conexión, el propietario de la base de datos ejecutando el siguiente comando SQL:
ALTER DATABASE <nombre-base-de-datos> OWNER TO <usuario>;
Una vez ejecutado el comando, la aplicación se instaló sin problemas.
¡Hasta pronto!