MySQL 8.0 リファレンスマニュアル


13.7.1.7 RENAME USER ステートメント

RENAME USER old_user TO new_user
    [, old_user TO new_user] ...

RENAME USER ステートメントは、既存の MySQL アカウントの名前を変更します。 存在しない古いアカウント、またはすでに存在する新しいアカウントに対しては、エラーが発生します。

RENAME USER を使用するには、mysql システムスキーマに対するグローバル CREATE USER 権限または UPDATE 権限が必要です。 read_only システム変数が有効になっている場合、RENAME USER にはさらに CONNECTION_ADMIN 権限 (または非推奨の SUPER 権限) が必要です。

MySQL 8.0.22 では、名前を変更するアカウントがストアドオブジェクトの DEFINER 属性として指定されている場合、RENAME USER はエラーで失敗します。 (つまり、アカウントの名前を変更すると、格納されているオブジェクトが孤立する場合、ステートメントは失敗します。) 操作を実行するには、SET_USER_ID 権限が必要です。この場合、ステートメントはエラーで失敗するのではなく、警告付きで成功します。 特定のアカウントを DEFINER 属性として指定するオブジェクトの識別方法などの追加情報は、孤立したストアドオブジェクト を参照してください。

各アカウント名には、セクション6.2.4「アカウント名の指定」で説明されている形式が使用されます。 例:

RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';

アカウント名のホスト名部分は、省略すると'%'にデフォルト設定されます。

RENAME USER により、古いユーザーによって保持されていた権限は新しいユーザーによって保持される権限になります。 ただし、RENAME USER は、古いユーザーが作成したどのデータベースまたはそれらのデータベース内のどのオブジェクトも自動的には削除したり、無効にしたりしません。 これには、DEFINER 属性に古いユーザーが指定されているストアドプログラムまたはビューが含まれます。 このようなオブジェクトにアクセスしようとすると、それが定義者のセキュリティーコンテキストで実行された場合は、エラーが生成される可能性があります。 (セキュリティーコンテキストについては、セクション25.6「ストアドオブジェクトのアクセス制御」を参照してください。)

権限の変更は、セクション6.2.13「権限変更が有効化される時期」に示されているように有効になります。


関連キーワード:  ステートメント, CREATE, TABLE, DROP, RENAME, サブクエリー, FUNCTION, SLAVE, 権限, 関数