

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan basis data MySQL menggunakan ekstensi mysql\_fdw
<a name="postgresql-mysql-fdw"></a>

Untuk mengakses MySQL-compatible database dari , Anda dapat menginstal dan menggunakan ekstensi. `mysql_fdw` Pembungkus data asing ini memungkinkan Anda bekerja dengan RDS untuk MySQL, Aurora MySQL, MariaDB, dan database lainnya. MySQL-compatible Koneksi dari instans DB RDS for PostgreSQL ke basis data MySQL dienkripsi secara optimal, tergantung pada konfigurasi klien dan server. Namun, Anda dapat menerapkan enkripsi jika diinginkan. Untuk informasi selengkapnya, lihat [Menggunakan enkripsi bergerak dengan ekstensi](#postgresql-mysql-fdw.encryption-in-transit). 

Ekstensi `mysql_fdw` didukung di Amazon RDS for PostgreSQL versi 14.2, 13.6, dan rilis yang lebih baru. Ini mendukung memilih, menyisipkan, memperbarui, dan menghapus dari RDS untuk PostgreSQL DB ke tabel pada instance database. MySQL-compatible 

**Topics**
+ [Mengatur basis data RDS for PostgreSQL untuk menggunakan ekstensi mysql\_fdw](#postgresql-mysql-fdw.setting-up)
+ [Contoh: Bekerja dengan basis data RDS for MySQL dari RDS for PostgreSQL](#postgresql-mysql-fdw.using-mysql_fdw)
+ [Menggunakan enkripsi bergerak dengan ekstensi](#postgresql-mysql-fdw.encryption-in-transit)

## Mengatur basis data RDS for PostgreSQL untuk menggunakan ekstensi mysql\_fdw
<a name="postgresql-mysql-fdw.setting-up"></a>

Mengatur ekstensi `mysql_fdw` pada instans DB RDS for PostgreSQL melibatkan pemuatan ekstensi pada instans DB, lalu membuat koneksi yang mengarah ke instans DB MySQL. Untuk tugas tersebut, Anda harus memiliki detail instans DB MySQL berikut:
+ Nama host atau titik akhir. Untuk instans DB RDS for MySQL, Anda dapat menemukan titik akhir menggunakan Konsol. Pilih tab Konektivitas & keamanan, lalu lihat di bagian "Titik akhir dan port". 
+ Nomor port. Nomor port default untuk MySQL adalah 3306. 
+ Nama basis data. Pengidentifikasi DB. 

Anda juga perlu memberikan akses di grup keamanan atau daftar kontrol akses (ACL) untuk port MySQL, 3306. Baik instans DB RDS for PostgreSQL dan instans DB RDS for MySQL memerlukan akses ke port 3306. Jika akses tidak dikonfigurasi dengan benar, saat Anda mencoba menyambung ke MySQL-compatible tabel, Anda akan melihat pesan galat yang mirip dengan berikut ini:

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

Dalam prosedur berikut, Anda (sebagai akun `rds_superuser`) akan membuat server asing. Kemudian, Anda akan memberikan akses ke server asing untuk pengguna tertentu. Pengguna ini akan membuat pemetaan mereka sendiri ke akun pengguna MySQL yang sesuai untuk bekerja dengan instans DB MySQL. 

**Untuk menggunakan mysql\_fdw agar dapat mengakses server basis data MySQL**

1. Hubungkan ke instans DB PostgreSQL Anda menggunakan akun yang memiliki peran `rds_superuser`. Jika Anda menerima default saat membuat instans DB RDS for PostgreSQL, nama pengguna adalah `postgres`, dan Anda dapat terhubung menggunakan alat baris perintah `psql` sebagai berikut:

   ```
   psql --host={{your-DB-instance}}.{{aws-region}}.rds.amazonaws.com --port=5432 --username=postgres –-password
   ```

1. Instal ekstensi `mysql_fdw` sebagai berikut:

   ```
   postgres=> CREATE EXTENSION mysql_fdw;
   CREATE EXTENSION
   ```

Setelah ekstensi diinstal pada instans DB RDS for PostgreSQL, Anda dapat mengatur server asing yang memberikan koneksi ke basis data MySQL.

**Untuk membuat server asing**

Lakukan tugas-tugas ini pada instans DB RDS for PostgreSQL. Langkah-langkah ini mengasumsikan bahwa Anda terhubung sebagai pengguna dengan hak istimewa `rds_superuser`, seperti `postgres`. 

1. Membuat server asing pada instans DB RDS for 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
   ```

1. Berikan akses pengguna yang sesuai ke server asing. Pengguna yang diberi akses harus pengguna non-administrator, yaitu pengguna tanpa peran `rds_superuser`.

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

Pengguna PostgreSQL membuat dan mengelola koneksi mereka ke basis data MySQL melalui server asing.

## Contoh: Bekerja dengan basis data RDS for MySQL dari RDS for PostgreSQL
<a name="postgresql-mysql-fdw.using-mysql_fdw"></a>

Misalnya, Anda memiliki tabel sederhana pada instans DB RDS for PostgreSQL. Pengguna RDS for PostgreSQL Anda ingin membuat kueri item (`SELECT`), `INSERT`, `UPDATE`, dan `DELETE` pada tabel tersebut. Asumsikan bahwa ekstensi `mysql_fdw` dibuat di instans DB RDS for PostgreSQL, seperti yang dijelaskan dalam prosedur sebelumnya. Setelah terhubung ke instans DB RDS for PostgreSQL sebagai pengguna yang memiliki hak istimewa `rds_superuser`, Anda dapat melanjutkan langkah-langkah berikut. 

1. Pada instans DB RDS for PostgreSQL, buat server asing: 

   ```
   test=> CREATE SERVER {{mysqldb}} FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '{{your-DB}}.{{aws-region}}.rds.amazonaws.com', port '3306');
   CREATE SERVER
   ```

1. Izinkan penggunaan kepada pengguna yang tidak memiliki izin `rds_superuser`, misalnya `user1`:

   ```
   test=> GRANT USAGE ON FOREIGN SERVER mysqldb TO user1;
   GRANT
   ```

1. Connect as{{user1}}, lalu buat pemetaan ke pengguna MySQL: 

   ```
   test=> CREATE USER MAPPING FOR {{user1}} SERVER mysqldb OPTIONS (username '{{myuser}}', password '{{mypassword}}');
   CREATE USER MAPPING
   ```

1. Buat tabel asing yang dihubungkan ke tabel MySQL:

   ```
   test=> CREATE FOREIGN TABLE {{mytab}} (a int, b text) SERVER mysqldb OPTIONS (dbname 'test', table_name '');
   CREATE FOREIGN TABLE
   ```

1. Jalankan kueri sederhana pada tabel asing:

   ```
   test=> SELECT * FROM mytab;
   a |   b
   ---+-------
   1 | apple
   (1 row)
   ```

1. Anda dapat menambahkan, mengubah, dan menghapus data dari tabel MySQL. Sebagai contoh:

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

   Jalankan lagi kueri `SELECT` untuk melihat hasilnya:

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

## Menggunakan enkripsi bergerak dengan ekstensi
<a name="postgresql-mysql-fdw.encryption-in-transit"></a>

Koneksi ke MySQL dari enkripsi dalam transit () secara default. TLS/SSL Namun, koneksi akan kembali ke non-enkripsi saat konfigurasi klien dan server berbeda. Anda dapat menerapkan enkripsi untuk semua koneksi yang keluar dengan menentukan opsi `REQUIRE SSL` pada akun pengguna RDS for MySQL. Pendekatan yang sama juga bekerja untuk akun pengguna MariaDB dan Aurora MySQL. 

Untuk akun pengguna MySQL yang dikonfigurasi ke `REQUIRE SSL`, upaya koneksi akan gagal jika koneksi tidak aman.

Untuk menerapkan enkripsi akun pengguna basis data MySQL yang ada, Anda dapat menggunakan perintah `ALTER USER`. Sintaksis dapat berbeda-beda, bergantung pada versi MySQL, seperti yang ditunjukkan pada tabel berikut. Untuk informasi selengkapnya, lihat [ALTER USER](https://dev.mysql.com/doc/refman/8.0/en/alter-user.html) pada *Panduan Referensi MySQL*.


| MySQL 5.7, MySQL 8.0 | MySQL 5.6 | 
| --- | --- | 
| `ALTER USER '{{user}}'@'%' REQUIRE SSL;` | `GRANT USAGE ON *.* to '{{user}}'@'%' REQUIRE SSL;` | 

Untuk informasi selengkapnya tentang ekstensi `mysql_fdw`, lihat dokumentasi [mysql\_fdw](https://github.com/EnterpriseDB/mysql_fdw). 