使用 mysql_fdw 副檔名來處理我的SQL資料庫 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 mysql_fdw 副檔名來處理我的SQL資料庫

若要從RDS適用於 Postgre 資料庫執行個體的 存取 My SQL 相容資料SQL庫,您可以安裝並使用擴充功能。mysql_fdw這個外部資料包裝函式可讓您使RDS用我的SQL、Aurora My SQL、MariaDB 和其他我SQL相容的資料庫。從RDS適用於 Postgre 資料SQL庫執行個體的 Aurora Postgre 資料SQL庫到我的SQL資料庫的連線會盡最大努力加密,具體取決於用戶端和伺服器組態。但是,如有需要,您可以強制執行加密。如需詳細資訊,請參閱搭配此擴充功能使用傳輸中加密

mysql_fdw擴展程序支持 Amazon RDS 郵政SQL版本 14.2,13.6 和更高版本。它支持從 Postgre SQL 數據庫到 My SQL 兼容數據庫實RDS例上的表中進行選擇,插入,更新和刪除。

設置您的 數據庫使用 mys ql_fdw 擴展

在 Postgre 資料庫執行個體的 上設定擴充功能時,RDS需要在SQL資執行個體中載入延伸模組,然後建立連線點到 My SQL DB 執行個體。mysql_fdw對於該工作,您必須具備下列有關 My SQL DB 執行個體的詳細資訊:

  • 主機名稱或端點。對於 ,您可以使用主控台尋找端點。選擇 Connectivity & security (連線和安全) 索引標籤,然後查看「端點和連線埠」區段。

  • 連線埠號碼。我的預設連接埠號碼SQL為 3306。

  • 資料庫的名稱。資料庫識別符。

您還需要為我的SQL連接埠 3306 提供安全性群組或存取控制清單 (ACL) 的存取權。適用於 適用於 Postgre SQL 資料庫執行個體的 Aurora 我RDS的SQL資料庫叢集都需要存取連接埠 3306。如果存取權設定不正確,當您嘗試連線至 My SQL-兼容表格時會看到類似於下列內容的錯誤訊息:

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

在以下程序中,您 (作為 rds_superuser 帳戶) 建立外部伺服器。然後,您將外部伺服器的存取權限授予特定使用者。然後,這些使用者會建立自己對應至適當的 [我的SQL使用者帳戶],以使用 My SQL DB 執行個體。

若要使用 mysql_fdw 存取我的資料庫伺服器 SQL
  1. 使用具有該rds_superuser角色的帳戶 Connect 到 Postgre SQL 資料庫執行個體。如果您在為 Postgre 資料庫行個體建立 RDS時接受了預設值,則使用者名稱為postgres,而且您可以使用psql命令列工具進行連線,如下所示:SQL

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres –-password
  2. 安裝 mysql_fdw 擴充功能,如下所示:

    postgres=> CREATE EXTENSION mysql_fdw; CREATE EXTENSION

RDS適用於 Postgre 資料庫執行個體的 上安裝擴充功能後,您可以設定提供與 My SQL SQL 資料庫連線的外部伺服器。

建立外部伺服器

在 Postgre 資料庫執行個體的 上執RDS行這些工作。SQL這些步驟假設您以具有 rds_superuser 權限 (例如 postgres) 的使用者進行連線。

  1. RDS適用於 Postgre 資料庫執行個體的 中建立外部伺服器:SQL

    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. 將適當的使用者存取權限授予外部伺服器。這些使用者應該是非管理員使用者,亦即沒有 rds_superuser 角色。

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

Postgre SQL 用戶通過外部服務器創建和管理自己與我的SQL數據庫的連接。

示例:使用 RDSSQL數據庫從 A SQL

假設您在 Postgre 資料庫執行個體的 個體上有一RDS個簡單的表格SQL。您 使用者想要查詢 (SELECT)、INSERTUPDATE、和該表上的DELETE項目。假設mysql_fdw擴充功能是在 Postgre SQL 資料庫執行個體上建立的,如上述程序所述。RDS以具有rds_superuser權限的使用者身分連線至 RDS for Postgre SQL 資料庫執行個體後,您可以繼續執行下列步驟。

  1. Postgre SQL 資料庫執行個體上,建立外部伺服器:

    test=> CREATE SERVER mysqldb FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'your-DB.aws-region.rds.amazonaws.com', port '3306'); CREATE SERVER
  2. 授與使用量給沒有 rds_superuser 許可的使用者,例如 user1

    test=> GRANT USAGE ON FOREIGN SERVER mysqldb TO user1; GRANT
  3. Connect 身分 user1,然後建立對 [我的SQL使用者] 的對應:

    test=> CREATE USER MAPPING FOR user1 SERVER mysqldb OPTIONS (username 'myuser', password 'mypassword'); CREATE USER MAPPING
  4. 建立連結至 My 資料表的外部SQL資料表:

    test=> CREATE FOREIGN TABLE mytab (a int, b text) SERVER mysqldb OPTIONS (dbname 'test', table_name ''); CREATE FOREIGN TABLE
  5. 對外部資料表執行簡單查詢:

    test=> SELECT * FROM mytab; a | b ---+------- 1 | apple (1 row)
  6. 您可以在「我的」表格中新增、變更和移除資SQL料。例如:

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

    再次執行 SELECT 查詢以查看結果:

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

搭配此擴充功能使用傳輸中加密

默認情況下,SQL從 到我SQLRDS的連接SQL使用傳輸過程中的加密(TLS/SSL)。但是,當用戶端和伺服器組態不同時,連線會回退到未加密。您可以在 [我的使用者帳戶] 上指定選REQUIRE SSL項,RDS對所有外送連線強制加SQL密。這種相同的方法也適用於 MariaDB 和 Aurora 我的SQL用戶帳戶。

對於設定為的 [我的SQL使用者帳戶]REQUIRE SSL,如果無法建立安全連線,連線嘗試會失敗。

若要對現有的「我的SQL資料庫」使用者帳戶強制加密,您可以使用ALTER USER命令。根據「我的」SQL 版本的不同,語法會有所不同,如下表所示。如需詳細資訊,請參閱「ALTERUSER的SQL參考手冊」中的。

我的 SQL 5.7,我的 SQL 8.0 我的 SQL 6

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

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

如需 mysql_fdw 擴充功能的詳細資訊,請參閱 mysql_fdw 文件。