本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
比較 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 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 TABLESPACE
、ALTER UNDO TABLESPACE ... SET INACTIVE
和DROP UNDO TABLESPACE
。 -
對於低於 3MySQL06 的 Aurora MySQL 版本,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
陳述式來建立具有一組權限的角色。然後,您可以使用 GRANT
和 SET ROLE
陳述式,以及 current_role
函數,將角色指派給使用者或應用程式、切換目前角色,並檢查哪些角色有效。如需 MySQL 8.0 中角色型權限系統的詳細資訊,請參閱《MySQL 參考手冊》中的使用角色
重要
我們強烈建議您不要直接在您的應用程式中使用主要使用者。而是遵循最佳實務,使用以應用程式所需的最低權限建立的資料庫使用者。
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
-
FLUSH_OPTIMIZER_COSTS
(Aurora MySQL 3.09 版及更新版本) -
FLUSH_STATUS
(Aurora MySQL 3.09 版及更新版本) -
FLUSH_TABLES
(Aurora MySQL 3.09 版及更新版本) -
FLUSH_USER_RESOURCES
(Aurora MySQL 3.09 版及更新版本) -
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
。如需存取其他 AWS 服務的程序,請參閱 將 Amazon Aurora MySQL 與其他 AWS 服務整合。Aurora MySQL 第 3 版包含與存取其他 AWS 服務相關的下列角色:user
-
AWS_LAMBDA_ACCESS
–INVOKE LAMBDA
權限的替代方案。如需使用方式的資訊,請參閱 從 Amazon Aurora 我的數SQL據庫集群調用 Lambda 函數。 -
AWS_LOAD_S3_ACCESS
–LOAD FROM S3
權限的替代方案。如需使用方式的資訊,請參閱 將資料從 Amazon S3 儲存貯體中的文字檔案載入 Amazon Aurora 我的資料SQL庫叢集。 -
AWS_SELECT_S3_ACCESS
–SELECT INTO S3
權限的替代方案。如需使用方式的資訊,請參閱 將資料從 Amazon Aurora 我的資料SQL庫叢集儲存到 Amazon S3 儲存貯體中的文字檔。 -
AWS_COMPREHEND_ACCESS
–INVOKE COMPREHEND
權限的替代方案。如需使用方式的資訊,請參閱 授與資料庫使用者存取 Aurora Machine Learning 的權限。 -
AWS_SAGEMAKER_ACCESS
–INVOKE SAGEMAKER
權限的替代方案。如需使用方式的資訊,請參閱 授與資料庫使用者存取 Aurora Machine Learning 的權限。 -
AWS_BEDROCK_ACCESS
– Amazon Bedrock 沒有類似INVOKE
權限。如需使用方式的資訊,請參閱 授與資料庫使用者存取 Aurora Machine Learning 的權限。
當使用 Aurora MySQL 第 3 版中的角色授與存取權時,您也可以使用 SET ROLE
或 role_name
SET 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 activemysql>
SELECT CURRENT_ROLE();+-----------------------------------------------------+ | CURRENT_ROLE() | +-----------------------------------------------------+ | `AWS_SELECT_S3_ACCESS`@`%`,`rds_superuser_role`@`%` | +-----------------------------------------------------+
尋找資料庫伺服器 ID
二進位記錄 (binlogserver_id
) 複寫需要資料庫伺服器 ID ()。在 Aurora MySQL 和 Community MySQL 中尋找伺服器 ID MySQL 的方式不同。
在 Community MySQL 中,伺服器 ID 是您在登入伺服器時使用下列語法取得的數字:
mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)
在 Aurora MySQL 中,伺服器 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
設定。不過,您可以建立新的使用者並變更目前的使用者,而且其個別密碼會使用新的身分驗證外掛程式。以下是範例。
mysql> CREATE USER 'testnewsha'@'%' IDENTIFIED WITH caching_sha2_password BY 'aNewShaPassword'; Query OK, 0 rows affected (0.74 sec)