2013-11-27 4 views
5

Ich habe zu diesem Problem viel gesucht, konnte aber keine Lösung finden.Mysql Stored Proceedure: DEFINER = "root" @ `%` funktioniert nicht in localhost

ich gespeicherte Prozedur bin mit:

DELIMITER $$ 

CREATE DEFINER=`root`@`%` PROCEDURE `GetImages`(
in search Varchar(80) 
) 
BEGIN 
select 
image_path 
from check_images 
where checkNumber=search; 

END 

Es ist nicht in localhost arbeitet und folgende Fehler beim Abruf:

Error Number: 1449

The user specified as a definer ('root'@'%') does not exist

Aber wenn ich% Zeichen ersetzen mit "localhost" ('root' @ 'localhost') dann funktioniert alles perfekt. Auch darf ich die gespeicherte Prozedur nicht ändern. Also sag mir bitte die beste Lösung, wie ich dieses Problem überwinden kann.

Ich werde jede Hilfe zu schätzen wissen.

Danke

Antwort

7

Die Nachricht ist ziemlich klar, dass Benutzer nicht existiert.

In MySQL besteht ein Benutzerkonto sowohl aus dem Benutzernamen als auch der Hostdefinitionskomponente.

Entweder die definer zu 'root'@'localhost' ändern oder einen Benutzer für 'root'@'%'

+0

Vielen Dank für die schnelle Antwort erstellen. Ich möchte die zweite Option auswählen, den Benutzer erstellen. Kannst du bitte einen Hinweis geben, was ich tun kann, um einen Benutzer für 'root' @ '%' zu erstellen? – Maria

+1

Großartig, du hast mir sehr geholfen, ich habe es wegen dir repariert. Vielen Dank – Maria

+0

@ user3043360 Froh, zu helfen. Ich hätte zur Kenntnis nehmen sollen, dass das Einrichten von Root-Zugriffen von überall neben localhost in der Regel als Sicherheitslücke betrachtet wird. In den meisten Fällen sollten Anwendungen "root" überhaupt nicht verwenden, sondern sollten anwendungsspezifische Benutzer definieren. –

Verwandte Themen