Fouten oplossen die vaak optreden tijdens of na de migratie naar Azure Database for MySQL - Flexibele server

VAN TOEPASSING OP: Azure Database for MySQL - Enkele server Azure Database for MySQL - Flexibele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

Azure Database for MySQL Flexibele server is een volledig beheerde service die wordt mogelijk gemaakt door de communityversie van MySQL. De MySQL-ervaring in een beheerde service-omgeving kan afwijken van het uitvoeren van MySQL in uw eigen omgeving. In dit artikel ziet u enkele veelvoorkomende fouten die gebruikers kunnen tegenkomen tijdens het migreren naar of ontwikkelen op flexibele Azure Database for MySQL-server voor het eerst.

Veelvoorkomende Verbinding maken ionfouten

FOUT 1184 (08S01): Verbinding 22 met db is afgebroken: 'db-name' gebruiker: 'user' host: 'hostIP' (init_connect opdracht is mislukt)

De bovenstaande fout treedt op na een geslaagde aanmelding, maar voordat u een opdracht uitvoert wanneer de sessie tot stand is gebracht. Het bovenstaande bericht geeft aan dat u een onjuiste waarde van init_connect de serverparameter hebt ingesteld, waardoor de sessie initialisatie mislukt.

Er zijn enkele serverparameters die require_secure_transport op sessieniveau niet worden ondersteund. Als u probeert de waarden van deze parameters te wijzigen, init_connect kan dit leiden tot fout 1184 tijdens het maken van verbinding met het exemplaar van de flexibele Azure Database for MySQL-server, zoals hieronder wordt weergegeven:

mysql> show databases; FOUT 2006 (HY000): MySQL-server is niet verbonden. Er wordt geprobeerd opnieuw verbinding te maken... Verbinding maken ion-id: 64897 Huidige database: *** NONE *** ERROR 1184 (08S01): Aborted connection 22 to db: 'db-name' user: 'user' host: 'hostIP' (init_connect opdracht is mislukt)

Oplossing: Stel init_connect de waarde opnieuw in op het tabblad Serverparameters in Azure Portal en stel alleen de ondersteunde serverparameters in met behulp van init_connect parameter.

Fouten vanwege ontbreken van SUPER-machtiging en DBA-rol

De SUPER-bevoegdheid en de DBA-rol worden niet ondersteund in de service. Als gevolg hiervan kunt u een aantal veelvoorkomende fouten tegenkomen die hieronder worden vermeld:

FOUT 1419: U beschikt niet over de SUPER-bevoegdheid en binaire logboekregistratie is ingeschakeld (mogelijk wilt u de minder veilige log_bin_trust_function_creators variabele gebruiken)

De bovenstaande fout kan optreden bij het maken van een functie of trigger als hieronder of het importeren van een schema. DDL-instructies als CREATE FUNCTION en CREATE TRIGGER worden naar het binaire logboek geschreven, zodat de secundaire replica deze kan uitvoeren. De SQL-replicathread heeft volledige bevoegdheid, die kan worden gebruikt om machtigingen uit te breiden. Ter bescherming tegen dit gevaar voor servers waarvoor binaire logboekregistratie is ingeschakeld, vereist de MySQL-engine dat opgeslagen functiemakers de SUPER-bevoegdheid hebben, naast de gebruikelijke bevoegdheid CREATE ROUTINE.

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

Oplossing: Als u de fout wilt oplossen, stelt u in op log_bin_trust_function_creators 1 van de blade Serverparameters in de portal, voert u de DDL-instructies uit of importeert u het schema om de gewenste objecten te maken. U kunt 1 blijven behouden log_bin_trust_function_creators voor uw server om de fout in de toekomst te voorkomen. Onze aanbeveling is om in te stellen log_bin_trust_function_creators als het beveiligingsrisico dat is gemarkeerd in de mySQL-communitydocumentatie minimaal is in Azure Database for MySQL Flexibele server, omdat bin-logboek niet wordt blootgesteld aan bedreigingen.

FOUT 1227 (42000) op regel 101: Toegang geweigerd; voor deze bewerking hebt u (ten minste één van) de SUPER-bevoegdheden nodig. Operation failed with exitcode 1

De bovenstaande fout kan optreden bij het importeren van een dump-bestand of het maken van een procedure met definities.

Oplossing: Om deze fout op te lossen, kan de gebruiker van de beheerder bevoegdheden verlenen om procedures te maken of uit te voeren door de opdracht GRANT uit te voeren, zoals in de volgende voorbeelden:

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

U kunt de definiërende gebruikers ook vervangen door de naam van de beheerder die het importproces uitvoert, zoals hieronder wordt weergegeven.

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

/* Modified to */

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

FOUT 1227 (42000) op regel 295: Toegang geweigerd; u voor deze bewerking (ten minste één van) de SUPER- of SET_USER_ID bevoegdheden nodig hebt

De bovenstaande fout kan optreden tijdens het uitvoeren van CREATE VIEW met DEFINER-instructies, als onderdeel van het importeren van een dumpbestand of het uitvoeren van een script. Flexibele Azure Database for MySQL-server staat geen SUPER-bevoegdheden of de SET_USER_ID-bevoegdheid toe aan een gebruiker.

Oplossing:

  • Gebruik, indien mogelijk, de gebruiker van de definities om CREATE VIEW uit te voeren. Het is waarschijnlijk dat er veel weergaven zijn met verschillende definieerders met verschillende machtigingen, dus dit is mogelijk niet haalbaar. OF
  • Bewerk het dumpbestand of CREATE VIEW-script en verwijder de INSTRUCTIE DEFINER= uit het dumpbestand. OF
  • Bewerk het dumpbestand of CREATE VIEW-script en vervang de definitiewaarden door de gebruiker met beheerdersmachtigingen die het scriptbestand importeert of uitvoert.

Tip

Gebruik sed of perl om een dumpbestand of SQL-script te wijzigen, om de instructie DEFINE= te vervangen

FOUT 1227 (42000) op regel 18: Toegang geweigerd; voor deze bewerking hebt u (ten minste één van) de SUPER-bevoegdheden nodig

De bovenstaande fout kan optreden als u probeert het dumpbestand te importeren uit een exemplaar van een flexibele Azure Database for MySQL-server waarvoor GTID is ingeschakeld voor het doelexemplaren van Azure Database for MySQL flexibele server. Mysqldump voegt SET @@SESSION.sql_log_bin=0-instructie toe aan een dumpbestand vanaf een server waarop GTID's worden gebruikt, waardoor binaire logboekregistratie wordt uitgeschakeld terwijl het dumpbestand opnieuw wordt geladen.

Oplossing: Als u deze fout wilt oplossen tijdens het importeren, verwijdert of markeert u de onderstaande regels in uw mysqldump-bestand en voert u het importeren opnieuw uit om te controleren of het is gelukt.

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

Veelvoorkomende verbindingsfouten voor aanmelding van de serverbeheerder

Wanneer een exemplaar van een flexibele Azure Database for MySQL-server wordt gemaakt, wordt de eindgebruiker tijdens het maken van de server een serverbeheerder aangemeld. Met de aanmelding van de serverbeheerder kunt u nieuwe databases maken, nieuwe gebruikers toevoegen en machtigingen verlenen. Als de aanmelding van de serverbeheerder wordt verwijderd, worden de machtigingen ingetrokken of wordt het wachtwoord ervan gewijzigd, kunt u tijdens verbindingen verbindingsproblemen in uw toepassing zien. Hieronder volgen enkele veelvoorkomende fouten.

FOUT 1045 (28000): Toegang geweigerd voor gebruiker 'gebruikersnaam'@'IP-adres' (met wachtwoord: JA)

De bovenstaande fout treedt op als:

  • De gebruikersnaam bestaat niet.
  • De gebruikersnaam van de gebruiker is verwijderd.
  • Het bijbehorende wachtwoord is gewijzigd of opnieuw is ingesteld.

Oplossing:

  • Valideer of 'gebruikersnaam' bestaat als een geldige gebruiker op de server, of dat deze per ongeluk is verwijderd. U kunt de volgende query uitvoeren door u aan te melden bij de flexibele servergebruiker van Azure Database for MySQL:

    select user from mysql.user;
    
  • Als u zich niet kunt aanmelden bij het exemplaar van azure Database for MySQL flexibele server om de bovenstaande query zelf uit te voeren, raden we u aan het beheerderswachtwoord opnieuw in te stellen met behulp van Azure Portal. Met de optie Wachtwoord opnieuw instellen vanuit Azure Portal kunt u de gebruiker opnieuw maken, het wachtwoord opnieuw instellen en de beheerdersmachtigingen herstellen, zodat u zich kunt aanmelden met de serverbeheerder en verdere bewerkingen kunt uitvoeren.

Volgende stappen

Als u het gewenste antwoord niet hebt gevonden, kunt u de volgende opties overwegen: