2010-07-08 11 views
23

Mam około stu zapisanych procedur w mojej bazie danych MySQL, ponieważ większość z nich ma "root" jako definicję.Zmień procedurę zdefiniowaną w bazie danych

Mam inne konto mysql o nazwie "abc", jak zmienić definicję wszystkich procedur na "abc".

Czy to możliwe, aby zrobić to samo, jeśli mam dostęp do serwera MySQL tylko jako „abc” użytkownik, a nie jako „root”

Odpowiedz

2

O ile wiem: Trzeba by uzyskać tekst scenariusza je wszystkie i upuść/odtwórz je jako abc. Nie można tego zrobić jako abc, chyba że abc ma pozwolenie na upuszczenie/utworzenie procedur.

+2

@Mithun Odpowiedź poniżej powinny być oznaczone jako odpowiedź. – hellowahab

72

Aby zobaczyć wykrywaniem:

show procedure status; 

Można je zmienić tak:

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

Na przykład:

UPDATE `mysql`.`proc` p SET definer = '[email protected]%' WHERE definer='[email protected]%' 

uważać, bo to będzie zmienić wszystkie wykrywaniem dla wszystkich baz danych.

+0

"Pokaż status procedury" nie działa dla mnie, ale aktualizacja działa. Dzięki. –

+0

Domyślnie DEFINER tworzy po utworzeniu procedury przechowywania w hostach hostowanych przez mysql db. Przykład: CREATE DEFINER = 'sis' @'% 'PROCEDURE' SP_Login'() Jak usunąć DEFINER? Proszę, pomóż mi rozwiązać ten problem, łamie mi głowę przez ostatnie 2 dni. – Sensa

+0

to uratowało mnie po oczyszczeniu użytkownika. – deltree

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

co za niezwykły sposób –

1

wyeksportować wszystkie procedury bazy <DB>:

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

Edytuj routines.sql i odtworzyć je:

cat routines.sql | mysql <DB> 

Określ -u i -p przełączniki w razie potrzeby.

8

Można zaktualizować Definer w mysql.proc stole przed wymaganym tabeli/db ...

update mysql.proc set definer='[email protected]' where name='t_p'; 
Powiązane problemy