Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd MySQL 1449:Użytkownik określony jako definiujący nie istnieje

Dzieje się tak często podczas eksportowania widoków/wyzwalaczy/procedur z jednej bazy danych lub serwera do innej, ponieważ użytkownik, który utworzył ten obiekt, już nie istnieje.

Masz dwie opcje:

1. Zmień DEFINIERA

Jest to prawdopodobnie najłatwiejsze do zrobienia podczas początkowego importowania obiektów bazy danych, usuwając dowolny DEFINER oświadczenia ze zrzutu.

Późniejsza zmiana definiującego jest trochę bardziej skomplikowana:

Jak zmienić definicję widoków

  1. Uruchom ten kod SQL, aby wygenerować niezbędne instrukcje ALTER

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
    
  2. Skopiuj i uruchom instrukcje ALTER

Jak zmienić definicję procedur składowanych

Przykład:

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

Bądź ostrożny, ponieważ zmieni to wszystkie definiujące dla wszystkich baz danych.

2. Utwórz brakującego użytkownika

Jeśli znalazłeś następujący błąd podczas korzystania z bazy danych MySQL:

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

Następnie możesz rozwiązać ten problem, używając :

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;

Od http://www .lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

To zadziałało jak urok - wystarczy zmienić someuser na nazwisko zaginionego użytkownika. Na lokalnym serwerze deweloperskim możesz zwykle użyć root .

Zastanów się również, czy rzeczywiście musisz przyznać użytkownikowi ALL uprawnień lub czy mogliby zrobić z mniejszymi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DAYNAME() Przykłady – MySQL

  2. Jak zdalnie połączyć się z bazą danych MySQL znajdującą się na naszym współdzielonym serwerze?

  3. MySQL:transakcje a tabele blokowania

  4. Funkcja MySQL ACOS() — zwraca cosinus łuku liczby

  5. Jak przechowywać uuid jako numer?