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「権限変更が有効化される時期」に示されているように有効になります。