sábado, 4 de julio de 2020

Cambiar el owner de tabla de una base de datos postgreSQL

El motor de Base de Datos PosgreSQL tiene una logica un tanto diferente sobre el resto de base de datos. una de ellas es la de cambiar de owner a las tablas.

Para tener un mejor ejemplo simularemos que la Base de datos se llama telcomde_telcomdb y tiene varios esquemas.

Si somos observadores, nos daremos cuenta que se accedio a phpPgAdmin con el usuario telcomdelperu. Para ejemplo usaremos el esquema almacen, donde tenemos unas tablas con el dueño merecamedi.

Si tratamos de modificar una tabla les arrojara el siguiente error
must be owner of relation articulos
eso significa que debes ser el owner de la tabla para poder hacer modificaciones. Para solucionar eso debemos ingresar al terminal como el usuario merecamedi directamente con la base de datos telcomde_telcomdb, obviamente te pedira la contraseña del usuario merecamedi el codigo es el siguiente:

psql -U merecamedi -d telcomde_telcomdb


Luego asignaremos el rol de merecamedi a telcomdelperu. Con el siguiente codigo:

GRANT merecamedi TO telcomdelperu;


como podrán ver en la imagen anterior les mostrara que telcomdelperu ya es miembro del rol de merecamedi. Significa, que telcomdelperu ya tiene el mismo rol que merecamedi. Pero en el caso de ustedes, les saldra el codigo de GRANT, que significa que fue asignado correctamente.

Luego se cambia de usuario a la base de datos. Esto es lo primero. El código es el siguiente

ALTER DATABASE telcomde_telcomdb OWNER TO telcomdelperu;



Con el codigo anterior, hemos cambiado de owner, ahora el dueño es telcomdelperu y ya no merecamedi. Sin embargo, a pesar de que ya es dueño telcomdelperu de la base de datos , las tablas siguen perteneciendo a merecamedi. Esto es algo particular de PostgreSQL. Ahora debemos cambiar cada tabla del esquema almacen. Con el siguiente código.

ALTER TABLE almacen.articulos OWNER TO telcomdelperu;


Cuando ejecuten el codigo anterior les mostrará el error de:
ERROR:  must be member of role "telcomdelperu"
Significa que el usuario que estamos utilizando merecamedi no es miembro del rol de telcomdelperu. Asi que, por ende, el codigo no funcionará. Para que funcione debemos inicar con el usuario telcomdelperu. cerramos y volvemos a iniciar la base de datos con el usuario telcomdelperu. El codigo es el siguiente:

psql -U telcomdelperu -d telcomde_telcomdb


Ahora si podremos utilizar el codigo:
ALTER TABLE almacen.articulos OWNER TO telcomdelperu;
Podremos ver que, ya se hizo el cambio desde phpPgAdmin.


Podremos repetir el código para todas las tablas del esquema.
ALTER TABLE almacen.categorias OWNER TO telcomdelperu;
ALTER TABLE almacen.marca OWNER TO telcomdelperu;
ALTER TABLE almacen.presentacion_producto OWNER TO telcomdelperu;
ALTER TABLE almacen.productos OWNER TO telcomdelperu;
ALTER TABLE almacen.unidad_medida OWNER TO telcomdelperu;

Podremos ver los cambios correctamente desde PhpPgAdmin.

Eso es todo. Ya sabemos cómo cambiar de owner un tabla. Deja tu comentario.

No hay comentarios:

Publicar un comentario

Crud Simple en laravel 8