本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
比較 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 TABLESPACE
、ALTER 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 Shell 命令,而非 mysqldump
。如需詳細資訊,請參閱執行個體傾印公用程式、結構描述傾印公用程式和資料表傾印公用程式
若要簡化許多使用者或應用程式的權限管理,您可以使用 CREATE ROLE
陳述式來建立具有一組權限的角色。然後,您可以使用 GRANT
和 SET 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
。如需存取其他 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 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
設定。