Při častém nastavování nebo migraci na Azure Database for MySQL došlo k chybám.

platí pro: Azure Database for MySQL – jeden server Azure Database for MySQL – flexibilní Server

Azure Database for MySQL je plně spravovaná služba, která využívá komunitu verze MySQL. Prostředí MySQL v prostředí spravované služby se může lišit od spuštění MySQL ve vašem vlastním prostředí. V tomto článku se zobrazí některé běžné chyby, se kterými se uživatelé můžou setkat při prvním pokusu o migraci nebo vývoji Azure Database for MySQL.

Běžné chyby připojení

Chyba 1184 (08S01): přerušené připojení 22 k databázi: ' DB-name ' uživatel: ' uživatel ' host: ' hostIP ' (init_connect příkaz se nezdařil)

K výše uvedené chybě dojde po úspěšném přihlášení, ale před spuštěním libovolného příkazu při vytvoření relace. Výše uvedená zpráva znamená, že jste nastavili nesprávnou hodnotu init_connect parametru serveru, což způsobuje selhání inicializace relace.

Existují některé parametry serveru, jako například require_secure_transport , které nejsou podporovány na úrovni relace, takže pokus o změnu hodnot těchto parametrů pomocí init_connect může mít za následek chybu 1184 při připojování k serveru MySQL, jak je znázorněno níže:

MySQL> Zobrazit databáze; Chyba 2006 (HY000): Server MySQL neztratil připojení. Probíhá pokus o opětovné připojení... ID připojení: 64897 aktuální databáze: * * * žádné * * * chyba 1184 (08S01): přerušené připojení 22 k databázi: ' DB-name ' uživatel: ' uživatel ' ' host ' ' hostIP ' (init_connect příkaz se nezdařil)

Řešení: resetování init_connect hodnoty na kartě parametry serveru v Azure Portal a nastavení pouze podporovaných parametrů serveru pomocí parametru init_connect.

Chyby z důvodu nedostatku role SUPER Privilege a DBA

Role SUPER Privilege a DBA není ve službě podporovaná. V důsledku toho může dojít k některým běžným chybám uvedeným níže:

Chyba 1419: nemáte oprávnění SUPERUŽIVATELE a binární protokolování je povolené ( možná budete chtít použít méně bezpečné log_bin_trust_function_creators proměnné).

K této chybě může dojít při vytváření funkce, triggeru níže nebo importu schématu. Příkazy DDL, jako je funkce vytvořit nebo aktivační událost pro vytvoření, jsou zapsány do binárního protokolu, takže je může spustit sekundární replika. replika SQL vlákno má úplná oprávnění, která je možné zneužít ke zvýšení oprávnění. Aby bylo možné chránit před tímto nebezpečím u serverů s povoleným binárním protokolováním, modul MySQL vyžaduje, aby tvůrci uložených funkcí měli oprávnění SUPER, a navíc k běžným oprávněním RUTINy CREATE.

CREATE FUNCTION f1(i INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
  RETURN i;
END;

Řešení: Pokud chcete chybu vyřešit, nastavte log_bin_trust_function_creators na portálu v okně parametry serveru na hodnotu 1, spusťte příkazy DDL nebo importujte schéma a vytvořte požadované objekty. Můžete pokračovat v údržbě log_bin_trust_function_creators na 1 pro váš server, abyste se vyhnuli chybám v budoucnu. Naše doporučení je nastaveno log_bin_trust_function_creators , protože bezpečnostní riziko zvýrazněné v dokumentaci komunity MySQL je minimální v Azure Database for MySQL protože protokol přihrádky není vystaven žádným hrozbám.

Chyba 1227 (42000) na řádku 101: přístup byl odepřen; pro tuto operaci potřebujete (aspoň jedno z) oprávnění SUPER. Operace selhala s ExitCode 1.

Výše uvedená chyba může nastat při importu souboru s výpisem paměti nebo vytvoření procedury, která obsahuje zpřesnění.

Řešení: Chcete-li vyřešit tuto chybu, uživatel s právy pro správu může udělit oprávnění k vytvoření nebo spuštění procedur spuštěním příkazu Grant jako v následujících příkladech:

GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';
GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';

Alternativně můžete změnit podrobnější hodnotu pomocí jména uživatele správce, který spouští proces importu, jak je znázorněno níže.

DELIMITER;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`127.0.0.1`*/ /*!50003
DELIMITER;;

/* Modified to */

DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`AdminUserName`@`ServerName`*/ /*!50003
DELIMITER ;

Chyba 1227 (42000) na řádku 295: přístup byl odepřen; potřebujete (aspoň jedno z) oprávnění SUPER nebo SET_USER_ID pro tuto operaci.

K výše uvedené chybě může dojít při provádění příkazu CREATE VIEW s příkazy DEFINe v rámci importu souboru s výpisem paměti nebo spuštěním skriptu. Azure Database for MySQL nepovoluje oprávnění SUPER nebo SET_USER_ID oprávnění pro žádného uživatele.

Řešení:

  • Pokud je to možné, použijte uživatele definující, aby spustil zobrazení vytvořit. Je možné, že existuje mnoho zobrazení s různými podrobnějšími oprávněními, takže to nemusí být proveditelné. NEBO
  • Upravte soubor s výpisem paměti nebo vytvořte skript pro zobrazení a odeberte příkaz DEFINe = ze souboru s výpisem paměti nebo
  • Upravte soubor s výpisem paměti nebo vytvořte skript pro zobrazení a nahraďte hodnoty definované uživatelem s oprávněními správce, které provádí import nebo spuštění souboru skriptu.

Tip

pomocí příkazu sed nebo perl upravte soubor s výpisem paměti nebo skript SQL, který nahradí příkaz define =.

Chyba 1227 (42000) na řádku 18: přístup byl odepřen; potřebujete (aspoň jedno z) oprávnění pro tuto operaci.

K této chybě může dojít, pokud používáte pokus o import souboru s výpisem paměti ze serveru MySQL s povoleným GTID do cílového serveru Azure Database for MySQL. Mysqldump přidá příkaz SET @ @SESSION.sql_log_bin = 0 do souboru s výpisem paměti ze serveru, na kterém se používá GTIDs, což zakazuje binární protokolování při opětovném načítání souboru s výpisem paměti.

Řešení: Chcete-li tuto chybu vyřešit při importu, odeberte nebo zakomentujte následující řádky v souboru mysqldump a spusťte import znovu, abyste zajistili jeho úspěch.

SET @MYSQLDUMP_TEMP_LOG_BIN = @ @SESSION.SQL_LOG_BIN ; Nastavte @ @SESSION.SQL_LOG_BIN = 0; Nastavte @ @GLOBAL.GTID_PURGED = ' '; Nastavte @ @SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN ;

Běžné chyby připojení pro přihlášení správce serveru

Při vytvoření serveru Azure Database for MySQL se koncovému uživateli během vytváření serveru poskytne přihlášení správce serveru. Přihlášení správce serveru umožňuje vytvářet nové databáze, přidávat nové uživatele a udělovat oprávnění. Pokud se přihlásí správce serveru, odvolají se jeho oprávnění nebo se změní jeho heslo, v průběhu připojení můžete začít zobrazovat chyby připojení ve vaší aplikaci. Níže jsou uvedené některé běžné chyby.

Chyba 1045 (28000): přístup byl odepřen pro uživatelské jméno @ IP adresa (pomocí hesla: Ano).

K výše uvedené chybě dochází v těchto případech:

  • Uživatelské jméno neexistuje.
  • Uživatelské jméno uživatele bylo odstraněno.
  • heslo je změněno nebo resetováno.

Řešení:

  • Ověří, jestli uživatelské jméno na serveru existuje jako platný uživatel, nebo se nechtěně odstraní. Následující dotaz můžete spustit tak, že se přihlásíte k Azure Database for MySQLmu uživateli:

    select user from mysql.user;
    
  • Pokud se nemůžete přihlásit k MySQL a spustit samotný dotaz, doporučujeme, abyste heslo správce obnovili pomocí Azure Portal. Možnost resetovat heslo z Azure Portal vám pomůže znovu vytvořit uživatele, resetovat heslo a obnovit oprávnění správce, která vám umožní přihlašovat se pomocí Správce serveru a provádět další operace.

Další kroky

Pokud jste nenašli odpověď, kterou hledáte, vezměte v úvahu následující možnosti: