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 では利用できないか、異なる動作をします。
-
リソースグループと関連付けられた SQL ステートメントは、Aurora MySQL ではサポートされていません。
-
Aurora MySQL は、ユーザー定義の UNDO テーブルスペースおよび関連する SQL ステートメント (
CREATE UNDO TABLESPACE
、ALTER UNDO TABLESPACE ... SET INACTIVE
およびDROP UNDO TABLESPACE
など) をサポートしていません。 -
Aurora MySQL は 3.06 より前のバージョンの Aurora MySQL の UNDO テーブルスペースの切り捨てをサポートしていません。Aurora MySQL バージョン 3.06 以降では、UNDO テーブルスペースの自動切り捨て
がサポートされています。 -
MySQL プラグインの設定は変更できません。
-
X プラグインはサポートされていません。
-
マルチソースレプリケーションはサポートされません。
ロールベースの特権モデル
Aurora MySQL バージョン 3 では、mysql
データベースのテーブルを直接変更できません。特に、mysql.user
テーブルへの挿入によるユーザ設定ができません。代わりに、SQL 文を使用してロールベースの権限を付与します。また、mysql
データベースでストアドプロシージャなど、他の種類のオブジェクトを作成することはできません。mysql
テーブルにクエリを実行することはできます。バイナリログ レプリケーションを使用する場合、出典 クラスターの mysql
テーブルへの直接的な変更は、ターゲット クラスターにレプリケートされません。
場合によっては、mysql
テーブルに挿入することで、アプリケーションがショートカットを使用して、ユーザーやその他のオブジェクトを作成する場合があります。その場合は、アプリケーションコードを変更して、CREATE
USER
などの対応したステートメントを使用します。アプリケーションが mysql
データベースでストアドプロシージャまたはその他のオブジェクトを作成する場合は、代わりに別のデータベースを使用してください。
外部 MySQL データベースからの移行中にデータベースユーザーのメタデータをエクスポートするには、mysqldump
の代わりに MySQL Shell コマンドを使用します。詳細については、「インスタンスダンプユーティリティ、スキーマダンプユーティリティ、テーブルダンプユーティリティ
多くのユーザーまたはアプリケーションの権限の管理を簡素化するには、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
-
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
ストアドプロシージャを呼び出してバイナリログレプリケーションを有効にすると、rdsrepladmin_priv_checks_user
が作成されます。
rdsrepladmin_priv_checks_user@localhost
ユーザーは予約済みユーザーです。変更しないでください。
他の AWS サービスにアクセスするためのロール
Aurora MySQL バージョン 3 には、他の AWS サービスにアクセスするために使用できるロールが含まれています。権限を付与する代わりに、これらのロールの多くを設定できます。例えば、GRANT
INVOKE LAMBDA ON *.* TO
の代わりに user
GRANT AWS_LAMBDA_ACCESS TO
を指定します。他の AWS サービスにアクセスする手順については、Amazon Aurora MySQL と他の AWS のサービスの統合 を参照してください。Aurora MySQLバージョン 3 には、他の AWS サービスへのアクセスに関連する次のロールが含まれています。user
-
AWS_LAMBDA_ACCESS
–INVOKE LAMBDA
の権限の代替。使用に関する情報については、「Amazon Aurora MySQL DB クラスターからの Lambda 関数の呼び出し」を参照してください。 -
AWS_LOAD_S3_ACCESS
–LOAD FROM S3
の権限の代替。使用に関する情報については、「Amazon S3 バケットのテキストファイルから Amazon Aurora MySQL DB クラスターへのデータのロード」を参照してください。 -
AWS_SELECT_S3_ACCESS
–SELECT INTO S3
の権限の代替。使用に関する情報については、「Amazon Aurora MySQL DB クラスターから Amazon S3 バケット内のテキストファイルへのデータの保存」を参照してください。 -
AWS_COMPREHEND_ACCESS
–INVOKE COMPREHEND
の権限の代替。使用に関する情報については、「データベースユーザーに Aurora 機械学習へのアクセスを許可する」を参照してください。 -
AWS_SAGEMAKER_ACCESS
–INVOKE SAGEMAKER
の権限の代替。使用に関する情報については、「データベースユーザーに Aurora 機械学習へのアクセスを許可する」を参照してください。 -
AWS_BEDROCK_ACCESS
– Amazon Bedrock には類似したINVOKE
の権限はありません。使用に関する情報については、「データベースユーザーに Aurora 機械学習へのアクセスを許可する」を参照してください。
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`@`%` | +-----------------------------------------------------+
認証
コミュニティ MySQL 8.0 では、デフォルトの認証プラグインは caching_sha2_password
です。Aurora MySQL バージョン3では、mysql_native_password
プラグインがまだ使用されます。default_authentication_plugin
設定は変更できません。