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 では利用できないか、異なる動作をします。

  • リソースグループと関連付けられた SQL ステートメントは、Aurora MySQL ではサポートされていません。

  • Aurora MySQL は、ユーザー定義の UNDO テーブルスペースおよび関連する SQL ステートメント (CREATE UNDO TABLESPACEALTER 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 user を指定します。他の AWS サービスにアクセスする手順については、Amazon Aurora MySQL と他の AWS のサービスの統合 を参照してください。Aurora MySQLバージョン 3 には、他の AWS サービスへのアクセスに関連する次のロールが含まれています。

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 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 設定は変更できません。