2.

MariaDB/MySQL でユーザー名を変更する RENAME USER の使い方と注意点

編集
この記事の要点
  • RENAME USER 文を使うとユーザーアカウントを削除・再作成せずに名前を変更できる
  • ユーザーは「名前+接続元ホスト」で識別されるため、'user'@'host' の組み合わせ単位で変更する
  • 権限・パスワード・所有オブジェクトはそのまま引き継がれるが、アプリ側の接続情報も同時に書き換える必要がある
  • 実行には CREATE USER 権限または UPDATE 権限(mysql システムDB に対する)が必要

RENAME USER 文の概要

MariaDB/MySQL で既存のユーザーアカウントの名前を変更するには RENAME USER 文を使用します。「ユーザーを一度削除してから作成し直す」操作と違って、権限定義(GRANT で付与されたもの)・パスワード・所有しているテーブルなどはそのまま保持されます。アカウント運用上の都合で命名規則を変えたい場合や、アプリ刷新に伴ってアカウント名を整理したい場合に便利な構文です。

構文

RENAME USER '旧ユーザ名'@'ホスト' TO '新ユーザ名'@'ホスト';

MariaDB/MySQL ではユーザーは「ユーザー名」と「接続元ホスト」のペアで識別される点に注意が必要です。'app_user'@'localhost''app_user'@'%' は別アカウントとして扱われるため、両方を変えたい場合は両方の RENAME 文を発行します。

使用例

例1:単一アカウントの名前変更

-- 旧名 old_user → 新名 new_user に変更(接続元はそのまま localhost)
RENAME USER 'old_user'@'localhost' TO 'new_user'@'localhost';

例2:複数アカウントを一括変更

カンマ区切りで複数のアカウントを 1 文にまとめて変更することもできます。

RENAME USER
    'devuser'@'localhost' TO 'app_dev'@'localhost',
    'devuser'@'%'         TO 'app_dev'@'%';

例3:ホストごと変更する

接続元の制限を緩めたい/厳しくしたい場合は、ホスト部分を書き換えます。

-- localhost からの接続のみだったユーザーを、社内 LAN 全体から接続できるように変更
RENAME USER 'batch'@'localhost' TO 'batch'@'192.168.10.%';

権限と影響範囲

項目引き継ぎ
GRANT で付与された権限引き継がれる
パスワード引き継がれる(再設定不要)
所有オブジェクト(VIEW / STORED PROCEDURE 等の DEFINER)引き継がれる
現在接続中のセッション影響なし(次回ログイン時から新名)
アプリの接続文字列手動で書き換えが必要

実行に必要な権限

RENAME USER の実行には次のいずれかが必要です。

  • グローバルな CREATE USER 権限
  • mysql システムデータベースに対する UPDATE 権限

一般的には DBA 権限を持つ管理ユーザー(root など)が実行します。

注意点とハマりどころ

  • 同名アカウントを TO で指定するとエラーになります。新名は既存に存在しないユーザー名にしてください。
  • 同時に走るアプリの接続文字列を忘れずに更新します。古い名前のままだとログインできなくなります。
  • 反映を確実にしたい場合は FLUSH PRIVILEGES; を実行すると安心です(MariaDB では自動で反映されるケースが多いですが、明示しておくと事故防止になります)。
  • 所有オブジェクトの DEFINER は古い名前で残ることがあります。information_schema.routinesviews を SELECT して確認しましょう。

確認方法

-- 変更後にユーザー一覧を確認
SELECT User, Host FROM mysql.user WHERE User IN ('old_user','new_user');

-- 権限が引き継がれているかを確認
SHOW GRANTS FOR 'new_user'@'localhost';

RENAME USER と DROP/CREATE の使い分け

シーン推奨手段
名前だけを変えたい(権限・所有物はそのまま)RENAME USER
権限も一新したいDROP USER → CREATE USER + GRANT
接続元ホストの制限だけ変えたいRENAME USER でホスト部分を書き換え
パスワードも変えたいRENAME USER 実行後に ALTER USER ... IDENTIFIED BY ...

関連記事

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ユーザー作成
  2. ユーザー名変更(RENAME USER)
  3. ユーザー一覧の表示

最近更新/作成されたページ