Tato otázka je trochu stará, ale právě jsem promarnil pár hodin snahou vyřešit úplně stejný problém, takže si myslím, že jasné vysvětlení by se mohlo někomu v budoucnu hodit...
Abychom to přerušili:Problém je v poli DEFINER ve vašem výpisu mysql. Vypadá to nějak takto:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
Problém je v tom, že toto *[email protected] * bude vždy pevně zakódováno do uživatelského účtu, který byl použit k vytvoření pohledu v původní databázi a NE uživatele, kterého jste použili k exportu nebo importu databáze, jak by se dalo očekávat (nebo alespoň já). A později, během importu, bude tento uživatel použit k opětovnému vytvoření pohledu.
Můžete tedy exportovat/importovat jako root, ale pokud původní DB běží pod jiným uživatelem a nemá práva CREATE VIEW v nové databázi, import se nezdaří.
Máte dvě jednoduchá řešení:
- Vyhledejte a nahraďte všechny odkazy na
some_user
@localhost
v souboru výpisu s vaším novým uživatelem (ten, který používáte k importu výpisu, např. example@ sqldat.com ) - Nebo můžete *some_user* udělit příslušná práva k nové databázi, aby bylo možné vytvářet pohledy pod jeho účtem
Oba způsoby problém vyřeší, ale myslím si, že první přístup je mnohem lepší a čistší, protože se v budoucnu nemusíte starat o více uživatelů.