procedimientos procedimiento para mostrar devolver definidor definer datos create change cambiar almacenados almacenado mysql stored-procedures

devolver - procedimiento almacenado para mostrar datos mysql



Cambiar el definidor de procedimiento almacenado (5)

Exportar todos los procedimientos de la base de datos <DB> :

mysqldump --single-transaction --no-data --no-create-info --routines / --skip-triggers <DB> >routines.sql

Edite routines.sql y recíclelos:

cat routines.sql | mysql <DB>

Especifique los conmutadores -u y -p si es necesario.

Tengo alrededor de un centenar de rutinas almacenadas en mi base de datos MySQL con la mayoría de ellas tienen ''root'' como definidor.

Tengo otra cuenta de mysql llamada ''abc'', cómo cambiar el definidor de todas las rutinas a ''abc''.

¿Es posible hacer lo mismo si tengo acceso al servidor MySQL solo como usuario ''abc'' y no como ''raíz''?


Para ver a los definidores:

show procedure status;

Puedes cambiarlos así:

UPDATE `mysql`.`proc` p SET definer = ''YournewDefiner'' WHERE definer=''OldDefinerShownBefore''

Por ejemplo:

UPDATE `mysql`.`proc` p SET definer = ''user@%'' WHERE definer=''root@%''

Tenga cuidado, porque esto cambiará todos los definidores para todas las bases de datos.


Por lo que sé: tendrías que obtener el texto del script de todos ellos y soltarlos / recrearlos como abc. No podría hacer esto como abc a menos que abc tenga permiso para abandonar / crear procedimientos.


Puede actualizar el definidor en la tabla mysql.proc con la tabla / db requerida ...

update mysql.proc set definer=''root@localhost'' where name=''t_p'';


alter procedure old_proc_name delimiter // create PROCEDURE new_proc_name (parameter) begin Your Sql Statement; end// delimiter ;