10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Medley(メドレー)Advent Calendar 2024

Day 11

[MySQL] マスターじゃないユーザで他ユーザのPASSWORD変更するための最小権限

Last updated at Posted at 2024-12-11

本記事は Medley(メドレー) Advent Calendar 202411日目 の記事です🎄

はじめに

株式会社メドレーの森川です。
普段はインフラ・SRE関連のタスクをメインに業務をしております 🛠️

マスターじゃないMySQLユーザで他のユーザのパスワードを変更させようとしたことがありました。
その際に権限設定で学びがあったので備忘録として記します。

※ MySQLのバージョンは 8系(8.0.34) を想定した内容となっています

前提

以下のようなユーザが作成済みであるとします。

ユーザ名 役割
root マスターユーザ
my_user 今回の軸となる「他ユーザのパスワード変更」を実行するユーザ
app_user (なんでもいいが想定として)アプリケーションで使用するためのユーザ

my_userの現在の権限は以下のようになっているとします。
my_userが CREATE USER されたばかりの状態)

-- show grants for 'my_user'@'%';
-- 実行結果

GRANT USAGE ON *.* TO `my_user`@`%`

目的

my_userを使用してapp_userのパスワードを変更する」 とします。

必要な権限

my_userに以下のように権限を与えることで、他のユーザのパスワードを変更することが可能となりました。

GRANT UPDATE ON mysql.* TO 'my_user'@'%';
-- SHOW GRANTS FOR 'my_user'@'%';
-- 実行結果

GRANT USAGE ON *.* TO `my_user`@`%`
GRANT UPDATE ON `mysql`.* TO `my_user`@`%`

-- SET PASSWORD FOR 'app_user'@'%' = 'XXXXXXXXXXXX';
-- 実行結果

Query 1 OK: 0 rows affected

上記が最小権限です。

SELECT権限もあるほうが確認作業時に都合が良かったので、SELECT権限を追加した設定としました。

GRANT SELECT,UPDATE ON mysql.* TO 'my_user'@'%';
-- SHOW GRANTS FOR 'my_user'@'%';
-- 実行結果

GRANT USAGE ON *.* TO `my_user`@`%`
GRANT SELECT, UPDATE ON `mysql`.* TO `my_user`@`%`

SELECT, UPDATE の有無によるパスワード確認・変更の実行可否については以下の表の通りとなりました。

kengen_matome.png

ダメだった権限設定方法

検証中に以下のような権限の設定も試しましたが、どれも目的は達成できませんでした。

-- alter user 権限を付与してみた、がダメ
GRANT ALTER USER ON *.* TO 'my_user'@'%';

-- DB・テーブルの指定をなくしてみた、がダメ
GRANT ALTER USER TO 'my_user'@'%';

-- userテーブルに限定させようとした、がダメ
GRANT UPDATE ON mysql.user TO 'my_user'@'%';

さいごに

マスターじゃないMySQLユーザで他のユーザのパスワードを変更する場合の最小権限についてまとめました。どなたかの参考になれば幸いです!
また、より適した権限設定などありましたら教えていただけると嬉しいですmm

明日 12/12(木) は @Kirika さんによる弊社主催のイベントについての記事とのことです!お楽しみに✨

We’re hiring!

メドレーでは各種エンジニアを絶賛募集中です!
カジュアル面談いつでもWelcomeですので、どうぞお気軽にお問い合わせください⛄️

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?