Vanliga fel påträffades under eller efter migreringen till Azure Database for MySQL
GÄLLER FÖR:
Azure Database for MySQL – enskild server
Azure Database for MySQL – flexibel server
Azure Database for MySQL ä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 visas 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 för första gången.
Vanliga anslutningsfel
FEL 1184 (08S01): Anslutningen 22 till databasen avbröts: "db-name"-användare: "användarens" värd: "hostIP" (init_connect-kommandot misslyckades)
Felet ovan inträffar efter lyckad inloggning men innan du kör något kommando när sessionen har upprättats. Meddelandet ovan anger att du har angett ett felaktigt värde för init_connect serverparametern, vilket gör att sessions initieringen misslyckas.
Det finns vissa serverparametrar som som inte stöds på sessionsnivå, och om du försöker ändra värdena för dessa parametrar med kan det resultera i fel 1184 när du ansluter till require_secure_transport init_connect MySQL-servern enligt nedan:
mysql> visa databaser; FEL 2006 (HY000): MySQL-servern har försvunnit Ingen anslutning. Försöker återansluta... Anslutnings-ID: 64897 Aktuell databas: · NONE · ERROR 1184 (08S01): Avbröt anslutningen 22 till db: "db-name"-användare: "användarens" värd: "hostIP" (init_connect-kommandot misslyckades)
Lösning: Återställ värdet på fliken Serverparametrar i Azure Portal och ange endast de init_connect serverparametrar som stöds med hjälp 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)
Felet ovan 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. Repliktråden SQL har fullständiga privilegier, vilket kan utnyttjas för att utöka privilegier. För att skydda mot den här risken för servrar som har binär loggning aktiverat kräver MySQL-motorn att lagrade funktionsskapare har SUPER-behörighet, utöver den vanliga CREATE ROUTINE-behörigheten.
CREATE FUNCTION f1(i INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
RETURN i;
END;
Lösning: Lös problemet genom att ange till 1 från serverparameterbladet i portalen, köra DDL-uttrycken eller importera schemat för log_bin_trust_function_creators 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 som den säkerhetsrisk som markerats i log_bin_trust_function_creators MySQL-communitydokumentationen är minimal i Azure Database for MySQL lagerplatsloggen inte exponeras för några hot.
FEL 1227 (42000) på rad 101: Åtkomst nekad; du behöver (minst en av) SUPER-behörigheterna för den här åtgärden. Åtgärden misslyckades med slutkod 1
Felet ovan 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 kommandot GRANT 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å den administratörsanvändare 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- SET_USER_ID behörigheterna för den här åtgärden
Ovanstående fel kan inträffa när du kör CREATE VIEW med DEFINER-instruktioner som en del av att importera en dumpfil eller köra ett skript. Azure Database for MySQL inte superprivilegier eller behörigheten SET_USER_ID till någon användare.
Lösning:
- Använd definieraranvändaren för att köra CREATE VIEW om det är möjligt. Det är troligt att det finns många vyer med olika definierare som har olika behörigheter, så detta 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.
Tips
Använd sed eller perl för att ändra en dumpfil eller SQL skript för att ersätta DEFINER=-instruktionen
FEL 1227 (42000) på rad 18: Åtkomst nekad; du behöver (minst en av) SUPER-behörigheterna för den här åtgärden
Ovanstående fel kan inträffa om du försöker importera dumpfilen från MySQL-servern med GTID aktiverat till Azure Database for MySQL servern. Mysqldump lägger till SET @=0-instruktionen i en dumpfil från en server där GTID:er används, vilket inaktiverar binär loggning medan dumpfilen läss in på @SESSION.sql_log_bin nytt.
Lösning: Lös det här felet när du importerar, tar bort eller kommenterar ut raderna nedan i mysqldump-filen och kör import igen för att säkerställa att det lyckas.
SET @MYSQLDUMP_TEMP_LOG_BIN = @ @SESSION.SQL_LOG_BIN ; SET @ @SESSION.SQL_LOG_BIN = 0; SET @ @GLOBAL.GTID_PURGED =''; SET @ @SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN ;
Vanliga anslutningsfel för inloggning för serveradministratör
När en Azure Database for MySQL-server skapas tillhandahålls en inloggning för serveradministratören 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 programmet under anslutningarna. Nedan följer några av de vanligaste felen
FEL 1045 (28000): Åtkomst nekad för användarens "användarnamn"@"IP-adress" (med lösenord: JA)
Felet ovan inträffar 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 om det har tagits bort av misstag. Du kan köra följande fråga genom att logga in Azure Database for MySQL användaren:
select user from mysql.user;Om du inte kan logga in på MySQL för att köra själva ovanstående fråga rekommenderar vi att du återställer administratörslösenordet med hjälp av Azure Portal. Alternativet för att återställa lösenord från Azure Portal 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.
Nästa steg
Om du inte hittar det svar du letar efter kan du överväga följande alternativ:
- Publicera din fråga på Microsoft Q&A question page or Stack Overflow.
- Skicka ett e-postmeddelande till Azure Database for MySQL Team @Ask Azure DB for MySQL. Den här e-postadressen är inte ett alias för teknisk support.
- Kontakta Azure Support och skapa en supportbiljett från Azure Portal. Om du vill åtgärda ett problem med ditt konto, skickar du in ett supportärende i Azure-portalen.
- Om du vill ge feedback eller begära nya funktioner, skapar du ett inlägg via UserVoice.