Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка в MySQL 1449:Потребителят, посочен като дефинер, не съществува

Това обикновено се случва при експортиране на изгледи/задействания/процедури от една база данни или сървър на друг, тъй като потребителят, създал този обект, вече не съществува.

Имате две опции:

1. Променете DEFINER

Това вероятно е най-лесно да направите, когато първоначално импортирате обектите на базата данни, като премахнете всеки DEFINER извлечения от сметището.

Промяната на дефинера по-късно е малко по-трудна:

Как да промените дефинера за изгледи

  1. Изпълнете този SQL, за да генерирате необходимите ALTER изрази

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
    
  2. Копирайте и изпълнете операторите ALTER

Как да промените дефинера за съхранени процедури

Пример:

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

Бъдете внимателни, защото това ще промени всички дефинери за всички бази данни.

2. Създайте липсващия потребител

Ако сте открили следната грешка, докато използвате MySQL база данни:

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

След това можете да го решите, като използвате следното:

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

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

Това работи като чар - трябва само да промените someuser на името на липсващия потребител. На локален сървър за разработчици обикновено може да използвате просто root .

Също така помислете дали наистина трябва да предоставите на потребителя ALL разрешения или дали биха могли да направят с по-малко.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. преобразуване на низ от дата в поле за дата и час на mysql

  2. Как да намеря n-ти ранг в MySQL?

  3. Стъпки за инсталиране на MySQL8 на CentOS

  4. отказан достъп за потребител @ 'localhost' до база данни ''

  5. Поправете „ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1“ при вмъкване на данни в MySQL