Aurora MySQL 第 3 版與 MySQL 8.0 社群版的比較 - Amazon Aurora

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

Aurora MySQL 第 3 版與 MySQL 8.0 社群版的比較

您可以使用下列資訊,來了解當您從不同的 MySQL 8.0 相容系統轉換為 Aurora MySQL 第 3 版時,應注意的變更。

通常,Aurora MySQL 第 3 版支援社群 MySQL 8.0.23 的功能集。來自 MySQL 8.0 社群版的一些新功能不適用於 Aurora MySQL。其中有些功能與 Aurora 的某些方面不相容,例如 Aurora 儲存架構。不需要其他功能,因為 Amazon RDS 管理服務會提供同等功能。社群 MySQL 8.0 中的下列功能不受支援,或在 Aurora MySQL 第 3 版中以不同方式運作。

如需所有 Aurora MySQL 第 3 版的版本備註,請參閱 Aurora MySQL 版本備註中的 Amazon Aurora MySQL 第 3 版的資料庫引擎更新

MySQL 8.0 功能不適用於 Aurora MySQL 第 3 版

來自社群 MySQL 8.0 中的下列功能無法使用,或在 Aurora MySQL 第 3 版中以不同方式運作。

  • Aurora MySQL 中不支援資源群組和相關聯的 SQL 陳述式。

  • Aurora MySQL 不支援使用者定義的還原表格空間和相關的 SQL 陳述式,例如CREATE UNDO TABLESPACEALTER UNDO TABLESPACE ... SET INACTIVE、和DROP UNDO TABLESPACE.

  • Aurora MySQL 不支援還原表格空間截斷功能,適用於低於 3.06 的 Aurora MySQL 版本。在 Aurora MySQL 版本 3.06 及更高版本中,支援自動還原表格空間截斷

  • 您無法修改任何 MySQL 外掛程式的設定。

  • 不支援 X 外掛程式。

  • 不支援多來源複寫。

角色型權限模型

使用 Aurora MySQL 第 3 版,您無法直接修改 mysql 資料庫中的資料表。尤其,您無法藉由插入至 mysql.user 資料表來設定使用者。相反地,您可以使用 SQL 陳述式來授與角色型權限。您也無法建立其他類型的物件,例如 mysql 資料庫中已存放的程序。您仍然可以查詢 mysql 資料表。如果您使用二進位日誌複寫,則直接對來源叢集上 mysql 資料表所做的變更不會複寫至目標叢集。

在某些情況下,您的應用程式可能會使用捷徑來建立使用者或其他物件,方法是插入至 mysql 資料表。若是這樣,請變更您應用程式的程式碼來使用對應的陳述式,例如 CREATE USER。如果您的應用程式在 mysql 資料庫中建立已存放的程序或其他物件,請改為使用不同的資料庫。

若要在從外部 MySQL 資料庫移轉期間匯出資料庫使用者的詮釋資料,您可以使用 MySQL 命令來代替mysqldump。如需詳細資訊,請參閱執行個體傾印公用程式、結構描述傾印公用程式和資料表傾印

若要簡化許多使用者或應用程式的權限管理,您可以使用 CREATE ROLE 陳述式來建立具有一組權限的角色。然後,您可以使用 GRANTSET ROLE 陳述式,以及 current_role 函數,將角色指派給使用者或應用程式、切換目前角色,並檢查哪些角色有效。如需 MySQL 8.0 中角色型權限系統的詳細資訊,請參閱《MySQL 參考手冊》中的使用角色

重要

我們強烈建議您不要直接在您的應用程式中使用主要使用者。而是遵循最佳實務,使用以應用程式所需的最低權限建立的資料庫使用者。

rds_ 超級用戶角色

Aurora MySQL 第 3 版包含具有下列所有權限的特殊角色。此角色已命名為 rds_superuser_role。每個叢集的主要管理使用者已授與此角色。rds_superuser_role 角色包含所有資料庫物件的下列權限:

  • ALTER

  • APPLICATION_PASSWORD_ADMIN

  • ALTER ROUTINE

  • CONNECTION_ADMIN

  • CREATE

  • CREATE ROLE

  • CREATE ROUTINE

  • CREATE TEMPORARY TABLES

  • CREATE USER

  • CREATE VIEW

  • DELETE

  • DROP

  • DROP ROLE

  • EVENT

  • EXECUTE

  • INDEX

  • INSERT

  • LOCK TABLES

  • PROCESS

  • REFERENCES

  • RELOAD

  • REPLICATION CLIENT

  • REPLICATION SLAVE

  • ROLE_ADMIN

  • SET_USER_ID

  • SELECT

  • SHOW DATABASES

  • SHOW_ROUTINE (Aurora MySQL 3.04 版及更新版本)

  • SHOW VIEW

  • TRIGGER

  • UPDATE

  • XA_RECOVER_ADMIN

角色定義還包括 WITH GRANT OPTION,以便管理使用者可以將該角色授與其他使用者。尤其,管理員必須授與執行二進位日誌複寫所需的任何權限,以 Aurora MySQL 叢集做為目標。

提示

若要查看權限的完整詳細資訊,請輸入下列陳述式。

SHOW GRANTS FOR rds_superuser_role@'%'; SHOW GRANTS FOR name_of_administrative_user_for_your_cluster@'%';

權限檢查使用者的二進位記錄複寫

Aurora MySQL 版本 3 包含使用者是否有二進位記錄檔 (binlog) 複寫的權限檢查。rdsrepladmin_priv_checks_user除了的權限之外rds_superuser_role,此使用者還具有replication_applier權限。

當您通過調用mysql.rds_start_replication存儲過程打開 binlog 複寫時,將創rdsrepladmin_priv_checks_user建。

rdsrepladmin_priv_checks_user@localhost使用者是保留的使用者。不要修改它。

存取其他服 AWS 務的角色

Aurora MySQL 第 3 版包含可用來存取其他 AWS 服務的角色。您可以將這些角色設定為 GRANT 陳述式的替代項目。例如,您可以指定 GRANT AWS_LAMBDA_ACCESS TO user,而不是 GRANT INVOKE LAMBDA ON *.* TO user。如需存取其他 AWS 服務的程序,請參閱將 Amazon Aurora MySQL 與其他 AWS 服務整合。Aurora MySQL 第 3 版包含下列與存取其他 AWS 服務相關的角色:

當使用 Aurora MySQL 第 3 版中的角色授與存取權時,您也可以使用 SET ROLE role_nameSET ROLE ALL 陳述式啟用角色。下列範例會顯示作法。以適當的角色名稱替代 AWS_SELECT_S3_ACCESS

# Grant role to user. mysql> GRANT AWS_SELECT_S3_ACCESS TO 'user'@'domain-or-ip-address' # Check the current roles for your user. In this case, the AWS_SELECT_S3_ACCESS role has not been activated. # Only the rds_superuser_role is currently in effect. mysql> SELECT CURRENT_ROLE(); +--------------------------+ | CURRENT_ROLE() | +--------------------------+ | `rds_superuser_role`@`%` | +--------------------------+ 1 row in set (0.00 sec) # Activate all roles associated with this user using SET ROLE. # You can activate specific roles or all roles. # In this case, the user only has 2 roles, so we specify ALL. mysql> SET ROLE ALL; Query OK, 0 rows affected (0.00 sec) # Verify role is now active mysql> SELECT CURRENT_ROLE(); +-----------------------------------------------------+ | CURRENT_ROLE() | +-----------------------------------------------------+ | `AWS_SELECT_S3_ACCESS`@`%`,`rds_superuser_role`@`%` | +-----------------------------------------------------+

身分驗證

在社群 MySQL 8.0 中,預設身分驗證外掛程式為 caching_sha2_password。Aurora MySQL 第 3 版仍會使用 mysql_native_password 外掛程式。您無法變更 default_authentication_plugin 設定。