sql >> Databáze >  >> RDS >> Mysql

Chyba MySQL 1449:Uživatel zadaný jako definující neexistuje

K tomu běžně dochází, když exportujete pohledy/spouštěče/procedury z jedné databáze nebo serveru na jiný, protože uživatel, který vytvořil daný objekt, již neexistuje.

Máte dvě možnosti:

1. Změňte DEFINER

To je možná nejjednodušší provést při prvotním importu databázových objektů odstraněním DEFINER výpisy z výpisu.

Změna definice později je trochu složitější:

Jak změnit definici zobrazení

  1. Spuštěním tohoto SQL vygenerujte potřebné příkazy ALTER

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
    
  2. Zkopírujte a spusťte příkazy ALTER

Jak změnit definici uložených procedur

Příklad:

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

Buďte opatrní, protože to změní všechny definice pro všechny databáze.

2. Vytvořte chybějícího uživatele

Pokud jste při používání databáze MySQL našli následující chybu:

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

Pak to můžete vyřešit pomocí následujícího:

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

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

Fungovalo to jako kouzlo – stačí změnit someuser na jméno chybějícího uživatele. Na místním dev serveru můžete obvykle použít pouze root .

Zvažte také, zda skutečně potřebujete uživateli udělit ALL oprávnění nebo zda by si vystačili s méně.



  1. MigrationSchemaMissing(Nelze vytvořit tabulku django_migrations (%s) % exc)

  2. Jak poznám, že je databáze vysoce kvalitní?

  3. Jak HEX() funguje v MariaDB

  4. Nové termíny bezplatných certifikačních zkoušek na Oracle Cloud a Autonomous Database