Dela via


Felsöka fel som ofta uppstår under eller efter migreringen till Azure Database for MySQL – flexibel server

GÄLLER FÖR: Azure Database for MySQL – Azure Database for MySQL – enskild server – flexibel server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

Azure Database for MySQL – flexibel server är en fullständigt hanterad tjänst som drivs av communityversionen av MySQL. MySQL-upplevelsen i en hanterad tjänstmiljö kan skilja sig från att köra MySQL i din egen miljö. I den här artikeln ser du några av de vanliga fel som användare kan stöta på när de migrerar till eller utvecklar på azure database for MySQL – flexibel server för första gången.

Vanliga anslutningsfel

FEL 1184 (08S01): Avbruten anslutning 22 till db: "db-name"-användare: "user"-värd: "hostIP" (init_connect kommando misslyckades)

Ovanstående fel uppstår efter lyckad inloggning, men innan du kör något kommando när sessionen har upprättats. Ovanstående meddelande anger att du har angett ett felaktigt värde för init_connect serverparametern, vilket gör att sessionsinitiering misslyckas.

Det finns vissa serverparametrar som require_secure_transport inte stöds på sessionsnivå, så om du försöker ändra värdena för dessa parametrar med kan init_connect det resultera i fel 1184 vid anslutning till den flexibla serverinstansen Azure Database for MySQL enligt nedan:

mysql> show databases; FEL 2006 (HY000): MySQL-servern har försvunnit Ingen anslutning. Försöker återansluta... Anslutnings-ID: 64897 Aktuell databas: *** INGEN *** FEL 1184 (08S01): Avbruten anslutning 22 till db: "db-name"-användare: "user"-värd: "hostIP" (init_connect kommandot misslyckades)

Lösning: Återställ init_connect värdet på fliken Serverparametrar i Azure-portalen och ange endast de serverparametrar som stöds med hjälp av init_connect parameter.

Fel på grund av brist på SUPER-behörighet och DBA-roll

SUPER-behörigheten och DBA-rollen stöds inte i tjänsten. Därför kan du stöta på några vanliga fel som anges nedan:

FEL 1419: Du har inte superprivilegier och binär loggning är aktiverat (du kanske vill använda den mindre säkra log_bin_trust_function_creators variabeln)

Ovanstående fel kan inträffa när du skapar en funktion, utlöser enligt nedan eller importerar ett schema. DDL-uttryck som CREATE FUNCTION eller CREATE TRIGGER skrivs till den binära loggen, så att den sekundära repliken kan köra dem. SQL-replikens tråd har fullständig behörighet, som kan utnyttjas för att höja behörigheterna. För att skydda mot den här faran för servrar som har binär loggning aktiverat kräver MySQL-motorn att lagrade funktionsskapare har superprivilegier, utöver det vanliga CREATE ROUTINE-privilegiet.

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

Lösning: Lös felet genom att ange log_bin_trust_function_creators 1 från bladet serverparametrar i portalen, köra DDL-uttrycken eller importera schemat för att skapa önskade objekt. Du kan fortsätta att underhålla log_bin_trust_function_creators till 1 för servern för att undvika felet i framtiden. Vår rekommendation är att ange log_bin_trust_function_creators som säkerhetsrisken i MySQL Community-dokumentationen är minimal i Azure Database for MySQL – flexibel server eftersom lagerplatsloggen inte utsätts för några hot.

FEL 1227 (42000) på rad 101: Åtkomst nekad; du behöver (minst en av) superprivilegier för den här åtgärden. Åtgärden misslyckades med slutkod 1

Ovanstående fel kan inträffa när du importerar en dumpfil eller skapar en procedur som innehåller definierare.

Lösning: För att lösa det här felet kan administratörsanvändaren bevilja behörighet att skapa eller köra procedurer genom att köra GRANT-kommandot som i följande exempel:

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

Alternativt kan du ersätta definierarna med namnet på administratörsanvändaren som kör importprocessen enligt nedan.

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

/* Modified to */

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

FEL 1227 (42000) på rad 295: Åtkomst nekad; du behöver (minst en av) SUPER- eller SET_USER_ID-behörigheterna för den här åtgärden

Ovanstående fel kan inträffa vid körning av CREATE VIEW med DEFINER-instruktioner som en del av att importera en dumpfil eller köra ett skript. Azure Database for MySQL – flexibel server tillåter inte SUPER-privilegier eller SET_USER_ID behörighet till någon användare.

Lösning:

  • Använd definieraren för att köra CREATE VIEW om möjligt. Det är troligt att det finns många vyer med olika definierare som har olika behörigheter, så det kanske inte är möjligt. ELLER
  • Redigera dumpfilen eller CREATE VIEW-skriptet och ta bort DEFINER=-instruktionen från dumpfilen. ELLER
  • Redigera dumpfilen eller CREATE VIEW-skriptet och ersätt definierarvärdena med användaren med administratörsbehörigheter som utför importen eller kör skriptfilen.

Dricks

Använd sed eller perl för att ändra en dumpfil eller ETT SQL-skript för att ersätta DEFINER=-instruktionen

FEL 1227 (42000) på rad 18: Åtkomst nekad; du behöver (minst en av) SUPER-privilegierna för den här åtgärden

Ovanstående fel kan inträffa om du försöker importera dumpfilen från en flexibel Azure Database for MySQL-serverinstans med GTID aktiverat till målinstansen för Azure Database for MySQL– flexibel server. Mysqldump lägger till SET @@SESSION.sql_log_bin=0-instruktionen till en dumpfil från en server där GTID:er används, vilket inaktiverar binär loggning medan dumpfilen läses in igen.

Lösning: Lös det här felet när du importerar, ta bort eller kommentera ut raderna nedan i mysqldump-filen och kör importen igen för att säkerställa att den lyckas.

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

Vanliga anslutningsfel vid inloggning med serveradministratör

När en flexibel Azure Database for MySQL-serverinstans skapas tillhandahålls en inloggning för serveradministratör av slutanvändaren när servern skapas. Med inloggningen för serveradministratören kan du skapa nya databaser, lägga till nya användare och bevilja behörigheter. Om inloggningen för serveradministratören tas bort, dess behörigheter återkallas eller dess lösenord ändras, kan du börja se anslutningsfel i ditt program när anslutningar. Följande är några av de vanliga felen.

FEL 1045 (28000): Åtkomst nekad för användarens användarnamn@IP-adress (med lösenord: JA)

Ovanstående fel uppstår om:

  • Användarnamnet finns inte.
  • Användarens användarnamn har tagits bort.
  • lösenordet ändras eller återställs.

Lösning:

  • Kontrollera om "användarnamn" finns som en giltig användare på servern eller tas bort av misstag. Du kan köra följande fråga genom att logga in på Azure Database for MySQL– flexibel serveranvändare:

    select user from mysql.user;
    
  • Om du inte kan logga in på azure database for MySQL– flexibel serverinstans för att köra själva frågan ovan rekommenderar vi att du återställer administratörslösenordet med azure-portalen. Alternativet återställ lösenord från Azure-portalen hjälper dig att återskapa användaren, återställa lösenordet och återställa administratörsbehörigheterna, vilket gör att du kan logga in med serveradministratören och utföra ytterligare åtgärder.