MySQLでユーザー一覧を取得する方法 権限とパスワード一覧も取得!

皆さんMySQL使ってますか?データベースを久々にメンテナンスするときや、MySQLの勉強でユーザーをたくさん作ってしまったときなどにユーザーの一覧を取得したくなる時ってありますよね。

今回はMySQLでユーザーの一覧を取得する方法を基礎から解説します。また、同時にわかると色々と便利なパスワードハッシュとユーザーの権限も一覧で取得する方法を紹介します。さっそくいってみましょう!

mysql.userとは?

まず理解しておきたいのが、mysql.userについてです。これはデフォルトで存在するmysqlデータベースに存在するuserというテーブルです。

userテーブルにユーザーに関する様々な情報が格納されています。rootでログインした上で、試しに次のコマンドを実行してみてください。

このコマンドは、mysql.userからカラムを表示しなさい、という意味になります。カラムとはテーブルの各項目、列に当たるものでしたね。バージョンによって表示される個数は若干異なりますが、50個前後の項目がズラッと並んだはずです。

ユーザーごとにこれらの項目の値を持つテーブルがmysql.userなのです。次の章では実際にこのテーブルから必要な情報を取得してみましょう。

ユーザー一覧を取得するコマンド

まずはオーソドックスに全ユーザーの全情報を取得してみましょう。そのためのコマンドがこちらです。

試しに実行してみるとわかると思いますが、とても読めたものではありません。50個近いカラムが横に並んで、それがユーザーの数だけあるのですから、よほど横に長いターミナルでもないとまともに表として表示できないでしょう。

ということで、必要な情報のみを抽出するSQL文を加えていきます。とりあえず、ホスト名とユーザーがわかればユーザー一覧と言えそうですから、この2つのカラムを表示させましょう。そのためのSQL文がこちらになります。

実行結果

次の章では少し応用的な利用法を紹介します。

パスワードハッシュの取得方法

この章ではユーザーのパスワードハッシュを取得する方法を紹介します。パスワードハッシュはなにか、というと、ユーザーごとに設定してあるパスワードにハッシュ関数を適用してハッシュ値にしたものになります。

セキュリティの話が絡んでくるので、あまり深入りせずにざっくり説明すると、たとえrootとはいえ他のユーザーのパスワードが簡単にわかってしまうのは色々と問題があるわけです。

ですが一方で、パスワードが設定してあるかどうかを確認したい、という思いもrootにはあります。MySQLではCREATE USERでパスワードを設定せずにユーザー作成ができてしまいますからね。

そこで、mysql.userにはパスワードのハッシュ値、つまりパスワードハッシュが格納されているわけです。パスワードハッシュがあればパスワードが何かしら設定されているのはわかりますが、ハッシュ値なので中身が何なのかはわかりません。

利便性とセキュリティのバランスが取れているわけです。それではそのパスワードハッシュを取得する方法を見ていきましょう。いきなり注意点ですが、MySQL5.5以前ではパスワードハッシュはPasswordカラムで取得できました。

ですが、5.6以降からは次で紹介するカラム名に切り替わりました。MySQL5.7以降ではSELECTにPasswordを指定するとエラーとなります。以前からMySQLを扱っていたり、古めのデータベースをいじる場合は注意してください。

実行結果

前章で紹介したSQL文のSELECTにauthentication_stringというカラムが追加されました。このカラムにユーザーのパスワードハッシュが格納されています。ちなみにパスワードを設定していないユーザーは次のように空白になります。

ユーザーの権限一覧を取得する方法

それでは最後にユーザーの権限を一覧で取得する方法を紹介します。

ユーザー権限に関してもmysql.userに記載があるため、一つずつSELECTで拾っていく方法もありますが、より手っ取り早く取得できるSQL文がありますので、こちらを使ったほうが楽でしょう。

userには「ユーザー名@ホスト名」の書式を記入します。そのため実際は次のような形になります。

実行結果

なお、MySQLにログインしているカレントユーザーの権限を知りたい場合は次のSQL文でもいけます。

まとめ

いかがでしたか?今回はmysql.userに関する基本的なところから、ユーザー一覧を取得するSQL文、パスワードハッシュを取得する方法、ユーザーの権限一覧を取得する方法までみてきました。

MySQLはこういった細かいノウハウを学んでいくことでどんどん上達することができます。頑張って基礎を積み重ねていきましょう。この記事が皆様のMySQL学習の一助となれば幸いです。

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

LINEで送る
Pocket

書いた人

平山 晃

平山 晃

フリーのエンジニア・ライター。
プログラミング、ライティング、マーケティングなど、あらゆる手段を駆使して、
ハッピーなフルリモートワーカーを目指し中。

最近興味がある分野は深層強化学習。
積みゲー、積ん読がどんどん増加しているのがここ数年の悩み。
実は侍エンジニア塾の卒業生だったりします。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説