Interazione con i database MySQL utilizzando l'estensione mysql_fdw - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Interazione con i database MySQL utilizzando l'estensione mysql_fdw

Per accedere a un database compatibile con MySQL dal cluster di database Aurora PostgreSQL è possibile installare e utilizzare l'estensione mysql_fdw. Questo wrapper di dati esterni consente di interagire con RDS per MySQL, Aurora MySQL, MariaDB e altri database compatibili con MySQL. La connessione dal cluster di database Aurora PostgreSQL al database MySQL è crittografata in base al miglior tentativo a seconda delle configurazioni di client e server. Tuttavia, se lo si desidera, è possibile imporre l'utilizzo della crittografia. Per ulteriori informazioni, consulta Utilizzo della crittografia in transito con l'estensione.

L'estensione mysql_fdw è supportata su Amazon Aurora PostgreSQL 15.4, 14.9, 13.12, 12.16, e versioni successive. Supporta le operazioni di select, insert, update e delete da un database RDS for PostgreSQL su tabelle contenuto in un'istanza database compatibile con MySQL.

Configurazione del database Aurora PostgreSQL per l'utilizzo dell'estensione mysql_fdw

La configurazione dell'estensione mysql_fdw sul cluster di database Aurora PostgreSQL comporta il caricamento dell'estensione nel cluster di database e quindi la creazione del punto di connessione all'istanza database MySQL. Per tale attività, è necessario disporre delle seguenti informazioni sull'istanza database MySQL:

  • Nome host o endpoint. Per trovare l'endpoint di un cluster di database Aurora MySQL è possibile utilizzare la console. Scegliere la scheda Connectivity & security (Connettività e sicurezza) e cercare nella sezione Endpoint and port (Endpoint e porta).

  • Numero della porta. La porta di default per MySQL è 3306.

  • Nome del database. L'identificatore del database.

È inoltre necessario fornire l'accesso al gruppo di sicurezza o alla lista di controllo degli accessi (ACL) per la porta MySQL 3306. Il cluster di database Aurora PostegreSQL e il cluster di database Aurora MySQL necessitano dell'accesso alla porta 3306. Se l'accesso non è configurato correttamente, quando si cerca di connettersi alla tabella compatibile con MySQL comparirà un messaggio di errore simile al seguente:

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

Nella seguente procedura, l'utente (utilizzando l'account rds_superuser) crea il server esterno. Quindi concede l'accesso al server esterno a specifici utenti. Questi utenti creano quindi i propri mapping agli account utente MySQL appropriati per interagire con l'istanza database MySQL.

Per utilizzare mysql_fdw per accedere al server database MySQL
  1. Effettuare la connessione all'istanza database PostgreSQL utilizzando un account che dispone del ruolo rds_superuser. Se al momento della creazione del cluster di database Aurora PostgreSQL sono stati accettati i valori predefiniti, il nome utente è postgres e lo strumento a riga di comando psql può essere usato per collegarsi come segue:

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres –-password
  2. Installare l'estensione mysql_fdw come segue:

    postgres=> CREATE EXTENSION mysql_fdw; CREATE EXTENSION

Dopo aver installato l'estensione sul cluster di database Aurora PostgreSQL imposta il server esterno che fornisce la connessione a un database MySQL.

Per creare il server esterno

Esegui queste attività sul cluster di database Aurora PostgreSQL. La procedura presuppone che l'utente sia connesso come utente con i privilegi di rds_superuser, come postgres.

  1. Creazione di un server esterno nel cluster di database 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. Concedere agli utenti appropriati l'accesso al server esterno. Questi dovrebbero essere utenti non amministratori, cioè utenti senza il ruolo rds_superuser.

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

Gli utenti PostgreSQL creano e gestiscono le proprie connessioni al database MySQL tramite il server esterno.

Esempio: utilizzo di un database Aurora MySQL da Aurora PostgreSQL

Supponi di disporre di una semplice tabella su un'istanza database Aurora PostgreSQL. Gli utenti di Aurora PostgreSQL desiderano eseguire query sugli elementi (SELECT), INSERT, UPDATE e DELETE contenute in tale tabella. Supponiamo che l'estensione mysql_fdw sia stata creata nell'istanza database RDS for PostgreSQL, come descritto nella procedura precedente. Dopo aver effettuato la connessione all'istanza database RDS for PostgreSQL come utente con i privilegi rds_superuser, è possibile procedere con i seguenti passaggi.

  1. Nel cluster di database Aurora PostgreSQL crea un server esterno:

    test=> CREATE SERVER mysqldb FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'your-DB.aws-region.rds.amazonaws.com', port '3306'); CREATE SERVER
  2. Concedere l'utilizzo a un utente che non dispone delle autorizzazioni rds_superuser, ad esempio user1:

    test=> GRANT USAGE ON FOREIGN SERVER mysqldb TO user1; GRANT
  3. Connettersi come user1 e quindi creare una mappatura per l'utente MySQL:

    test=> CREATE USER MAPPING FOR user1 SERVER mysqldb OPTIONS (username 'myuser', password 'mypassword'); CREATE USER MAPPING
  4. Creare di una tabella esterna collegata a una tabella MySQL:

    test=> CREATE FOREIGN TABLE mytab (a int, b text) SERVER mysqldb OPTIONS (dbname 'test', table_name ''); CREATE FOREIGN TABLE
  5. Eseguire una semplice query sulla tabella esterna:

    test=> SELECT * FROM mytab; a | b ---+------- 1 | apple (1 row)
  6. È possibile aggiungere, modificare e rimuovere i dati dalla tabella MySQL. Ad esempio:

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

    Eseguire nuovamente la query SELECT per visualizzare i risultati:

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

Utilizzo della crittografia in transito con l'estensione

La connessione a MySQL da Aurora PostgreSQL utilizza la crittografia in transito (TLS/SSL) per impostazione predefinita. Tuttavia, la connessione torna a essere non crittografata quando la configurazione di client e server differiscono. È possibile applicare la crittografia a tutte le connessioni in uscita specificando l'opzione REQUIRE SSL sugli account utente RDS for MySQL. Lo stesso approccio funziona anche per gli account utente MariaDB e Aurora MySQL.

Per gli account utente MySQL configurati su REQUIRE SSL, il tentativo di connessione non riesce se non è possibile stabilire una connessione sicura.

Per applicare la crittografia agli account utente esistenti del database MySQL è possibile utilizzare il comando ALTER USER. La sintassi varia a seconda della versione MySQL, come mostrato nella tabella seguente. Per ulteriori informazioni, consultare la voce ALTER USER nel Manuale di riferimento di MySQL.

MySQL 5.7, MySQL 8.0 MySQL 5.6

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

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

Per ulteriori informazioni sull'estensione mysql_fdw, consultare la documentazione di mysql_fdw.