Travailler avec des bases de données MySQL en utilisant l'extension mysql_fdw - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Travailler avec des bases de données MySQL en utilisant l'extension mysql_fdw

Pour accéder à une base de données compatible MySQL à partir de votre cluster de base de données Aurora PostgreSQL, vous pouvez installer et utiliser l'extension mysql_fdw. Cet encapsuleur de données externes vous permet de travailler avec RDS for MySQL, Aurora MySQL, MariaDB et d'autres bases de données compatibles avec MySQL. La connexion de votre cluster de base de données Aurora PostgreSQL à la base de données MySQL est chiffrée au mieux, en fonction des configurations du client et du serveur. Cependant, vous pouvez imposer le chiffrement si vous le souhaitez. Pour de plus amples informations, consultez Utilisation du chiffrement en transit avec l'extension.

L'extension mysql_fdw est prise en charge par Amazon Aurora PostgreSQL versions 15.4, 14.9, 13.12 et 12.16, et ultérieures. Elle prend en charge la sélection, l'insertion, la mise à jour et la suppression d'une base de données RDS for PostgreSQL vers des tables sur une instance de base de données compatible MySQL.

Configuration de votre base de données Aurora PostgreSQL pour utiliser l'extension mysql_fdw

La configuration de l'extension mysql_fdw sur votre cluster de base de données Aurora PostgreSQL implique le chargement de l'extension dans votre cluster de base de données, puis la création du point de connexion à l'instance de base de données MySQL. Pour cette tâche, vous devez disposer des informations suivantes sur l'instance de base de données MySQL :

  • Nom d'hôte ou point de terminaison. Pour un cluster de base de données Aurora MySQL, vous pouvez trouver le point de terminaison à l'aide de la console. Sélectionnez l'onglet Connectivité et sécurité et regardez dans la section « Point de terminaison et port ».

  • Numéro de port. Le numéro de port par défaut pour MySQL est 3306.

  • Nom du moteur de la base de données. L'identifiant de la base de données.

Vous devez également fournir un accès sur le groupe de sécurité ou la liste de contrôle d'accès (ACL) pour le port MySQL 3306. Les clusters de bases de données Aurora PostgreSQL et Aurora MySQL doivent avoir accès au port 3306. Si l'accès n'est pas configuré correctement, lorsque vous essayez de vous connecter à une table compatible avec MySQL, vous voyez apparaître un message d'erreur similaire au suivant :

ERROR: failed to connect to MySQL: Can't connect to MySQL server on 'hostname.aws-region.rds.amazonaws.com:3306' (110)

Dans la procédure suivante, vous (en tant que compte rds_superuser) créez le serveur externe. Vous accordez ensuite l'accès au serveur externe à des utilisateurs spécifiques. Ces utilisateurs créent ensuite leurs propres mappages vers les comptes utilisateurs MySQL appropriés pour travailler avec l'instance de base de données MySQL.

Pour utiliser mysql_fdw pour accéder à un serveur de base de données MySQL
  1. Connectez-vous à votre instance de base de données PostgreSQL en utilisant un compte qui a le rôle rds_superuser. Si vous avez accepté les valeurs par défaut lors de la création de votre cluster de base de données Aurora PostgreSQL, le nom d'utilisateur est postgres, et vous pouvez vous connecter à l'aide de l'outil de ligne de commande psql comme suit :

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres –-password
  2. Installez l'extension mysql_fdw comme suit :

    postgres=> CREATE EXTENSION mysql_fdw; CREATE EXTENSION

Une fois l'extension installée sur votre cluster de base de données Aurora PostgreSQL, vous devez configurer le serveur externe qui fournit la connexion à une base de données MySQL.

Pour créer le serveur externe

Effectuez ces tâches sur le cluster de base de données Aurora PostgreSQL. Les étapes supposent que vous êtes connecté en tant qu'utilisateur avec des privilèges rds_superuser, tels que postgres.

  1. Créer un serveur externe dans le cluster de base de données Aurora PostgreSQL :

    postgres=> CREATE SERVER mysql-db FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'db-name.111122223333.aws-region.rds.amazonaws.com', port '3306'); CREATE SERVER
  2. Accordez aux utilisateurs appropriés l'accès au serveur externe. Il doit s'agir d'utilisateurs non administrateurs, c'est-à-dire d'utilisateurs sans rôle rds_superuser.

    postgres=> GRANT USAGE ON FOREIGN SERVER mysql-db to user1; GRANT

Les utilisateurs de PostgreSQL créent et gèrent leurs propres connexions à la base de données MySQL via le serveur externe.

Exemple : utilisation d'une base de données Aurora MySQL à partir d'Aurora PostgreSQL

Supposons que vous ayez une table simple sur une instance de base de données Aurora PostgreSQL. Vos utilisateurs Aurora PostgreSQL souhaitent interroger les éléments (SELECT), INSERT, UPDATE et DELETE de cette table. Supposons que l'extension mysql_fdw a été créée sur votre instance de base de données RDS for PostgreSQL, comme indiqué dans la procédure précédente. Après vous être connecté à l'instance de base de données RDS for PostgreSQL en tant qu'utilisateur disposant de privilèges rds_superuser, vous pouvez procéder aux étapes suivantes.

  1. Créez un serveur externe sur l'instance de base de données Aurora PostgreSQL :

    test=> CREATE SERVER mysqldb FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'your-DB.aws-region.rds.amazonaws.com', port '3306'); CREATE SERVER
  2. Accordez l'utilisation à un utilisateur dépourvu d'autorisations rds_superuser, par exemple user1 :

    test=> GRANT USAGE ON FOREIGN SERVER mysqldb TO user1; GRANT
  3. Connectez-vous en tant que user1, puis créez un mappage vers l'utilisateur MySQL :

    test=> CREATE USER MAPPING FOR user1 SERVER mysqldb OPTIONS (username 'myuser', password 'mypassword'); CREATE USER MAPPING
  4. Créez une table externe liée à la table MySQL :

    test=> CREATE FOREIGN TABLE mytab (a int, b text) SERVER mysqldb OPTIONS (dbname 'test', table_name ''); CREATE FOREIGN TABLE
  5. Exécutez une requête simple dans la table externe :

    test=> SELECT * FROM mytab; a | b ---+------- 1 | apple (1 row)
  6. Vous pouvez ajouter, modifier et supprimer des données de la table MySQL. Par exemple :

    test=> INSERT INTO mytab values (2, 'mango'); INSERT 0 1

    Exécutez à nouveau la requête SELECT pour voir les résultats :

    test=> SELECT * FROM mytab ORDER BY 1; a | b ---+------- 1 | apple 2 | mango (2 rows)

Utilisation du chiffrement en transit avec l'extension

La connexion à MySQL à partir d'Aurora PostgreSQL utilise le chiffrement en transit (TLS/SSL) par défaut. Toutefois, la connexion redevient non chiffrée lorsque la configuration du client et du serveur diffère. Vous pouvez imposer le chiffrement pour toutes les connexions sortantes en spécifiant l'option REQUIRE SSL sur les comptes d'utilisateur RDS for MySQL. Cette même approche fonctionne également pour les comptes utilisateurs MariaDB et Aurora MySQL.

Pour les comptes utilisateurs MySQL configurés pour REQUIRE SSL, la tentative de connexion échoue si une connexion sécurisée ne peut être établie.

Pour appliquer le chiffrement aux comptes d'utilisateurs de bases de données MySQL existants, vous pouvez utiliser la commande ALTER USER. La syntaxe varie en fonction de la version MySQL, comme indiqué dans le tableau suivant. Pour plus d'informations, consultez ALTER USER dans le Manuel de référence de MySQL.

MySQL 5.7, MySQL 8.0 MySQL 5.6

ALTER USER 'user'@'%' REQUIRE SSL;

GRANT USAGE ON *.* to 'user'@'%' REQUIRE SSL;

Pour plus d'informations sur l'extension mysql_fdw, consultez la documentation mysql_fdw.