it-swarm.com.de

Der als Definierer angegebene Benutzer ('root' @ '%') existiert nicht

Ich habe einen Trigger wie folgt definiert:

USE `veeva_bi`;
DELIMITER $$
DROP TRIGGER IF EXISTS veeva_bi.account_ai$$
USE `veeva_bi`$$
CREATE DEFINER = CURRENT_USER TRIGGER `veeva_bi`.`account_ai` AFTER INSERT ON `account` FOR EACH ROW
BEGIN
    // do trigger stuff here
END$$
DELIMITER ;

Wenn ich diese Abfrage ausführe, wurde der Trigger als [email protected]:

CREATE DEFINER=`root`@`localhost` TRIGGER `veeva_bi`.`account_ai` AFTER INSERT ON `account` FOR EACH ROW
BEGIN
    // do trigger stuff here
END

Aber jedes Mal, wenn ich versuche, ein PHP - Skript auszuführen, das als Root-Benutzer eine Verbindung zu MariaDB herstellt, wird folgende Fehlermeldung angezeigt:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('root'@'%') does not exist' in /var/www/html/veeva_replicator/DB.php:158

Warum ist das so? Ich habe andere Trigger auf die gleiche Weise erstellt und sie haben funktioniert, aber dieser funktioniert nicht. Irgendwelche Ratschläge oder Hilfe dazu?

2
ReynierPM

Muss eine PROXY Situation sein. As MySQLs Dokumentation sagt:

Wenn die Authentifizierung beim MySQL-Server mithilfe eines Authentifizierungs-Plugins erfolgt, fordert das Plugin möglicherweise an, dass der verbindende (externe) Benutzer zu Zwecken der Berechtigungsprüfung als anderer Benutzer behandelt wird. Dadurch kann der externe Benutzer ein Proxy für den zweiten Benutzer sein. das heißt, die Berechtigungen des zweiten Benutzers zu haben. Mit anderen Worten, der externe Benutzer ist ein "Proxy-Benutzer" (ein Benutzer, der sich als ein anderer Benutzer ausgeben oder als dieser bekannt werden kann) und der zweite Benutzer ist ein "Proxy-Benutzer" (ein Benutzer, dessen Identität von einem Proxy-Benutzer übernommen werden kann). .

Lauf:

 GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION;

Sie können sich auf @ RolandoMySQLDBAs Antwort beziehen.

2
oNare

Ich habe dieses Problem beim Aktualisieren einer Zeile in MySQL festgestellt.

Ich verbinde MySQL mit einem anderen Benutzer und Passwort anstelle von root.

Wenn ich in mysql "show triggers" eingebe, habe ich festgestellt, dass der Triger "root @%" verwendet. Dies führt zu dieser Ausnahme.

2
carton.swing