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

Dokáže MySQL spolehlivě obnovit zálohy, které obsahují pohledy, nebo ne?

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í:

  1. 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 )
  2. 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ů.



  1. Jak zobrazit aktuální nastavení pro nulový výstup v PostgreSQL (psql)

  2. Hibernate Query problém s Informix

  3. Jak povolím, aby parametr rozevíracího seznamu v SSRS měl výchozí hodnotu -- All -- ?

  4. přidání balíčku RMySQL do R se nezdaří (ve Windows)?