比較 Aurora MySQL 第 3 版和 MySQL 8.0 Community Edition - Amazon Aurora

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

比較 Aurora MySQL 第 3 版和 MySQL 8.0 Community Edition

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

一般而言,Aurora MySQL 第 3 版支援社群 MySQL 8.0.23 的功能集。MySQL 8.0 社群版本中的一些新功能不適用於 Aurora My。SQL其中有些功能與 Aurora 的某些方面不相容,例如 Aurora 儲存架構。由於 Amazon RDS管理服務提供同等功能,因此不需要其他功能。Aurora MySQL 第 3 版不支援或運作方式不同的社群中的下列功能 MySQL 8.0。

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

Aurora MySQL 第 3 版不提供我的SQL 8.0 功能

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

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

  • Aurora MySQL 不支援使用者定義的復原資料表空間和相關聯的SQL陳述式,例如 CREATE UNDO TABLESPACEALTER UNDO TABLESPACE ... SET INACTIVEDROP 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 Shell 命令,而非 mysqldump。如需詳細資訊,請參閱執行個體傾印公用程式、結構描述傾印公用程式和資料表傾印公用程式

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

重要

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

rds_superuser_role

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 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`@`%` | +-----------------------------------------------------+

尋找資料庫伺服器 ID

二進位記錄 (binlogserver_id) 複寫需要資料庫伺服器 ID ()。在 Aurora MySQL from Community My 中尋找伺服器 ID 的方式不同SQL。

在 Community My 中SQL,伺服器 ID 是您在登入伺服器時使用下列語法取得的數字:

mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)

在 Aurora My 中SQL,伺服器 ID 是資料庫執行個體 ID,您可以在登入資料庫執行個體時使用下列語法取得:

mysql> select @@aurora_server_id; +------------------------+ | @@aurora_server_id | +------------------------+ | mydbcluster-instance-2 | +------------------------+ 1 row in set (0.00 sec)

如需 binlog 複寫的詳細資訊,請參閱 在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

身分驗證

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