MySQLのユーザ一覧は、mysql.userを参照 権限一覧やパスワードハッシュ一覧の取得方法
  • facebookページ
  • twitterページ
  • 2019.12.27

    MySQLのユーザ一覧は、mysql.userを参照 権限一覧やパスワードハッシュ一覧の取得方法

    MySQL 5.7.28でのユーザ一覧についてまとめています。

    以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    サンプルデータベースのインストール方法は、下記を参考にしてください。

    【関連記事】
    MySQLの入門には、GUIツールで慣れ、サンプルDBを使った学習が効果的

    MySQLのユーザ一覧は、mysql.userを参照

    MySQLでユーザ一覧を確認するには、以下のSQLを実行します。

    user0、user1は手動で作成したユーザです。

    【関連記事】
    MySQLでユーザ作成 GRANTでユーザ作成と権限設定を同時に行う方法

    mysql.sessionと、mysql.sysはMySQLの内部的に使用されているアカウントで、クライアントからの接続時に使うことはできません。

    mysql.sysは、システムデータベース(sysスキーマ)の所有者として使われています。rootアカウントがリネームまたは削除されたときに、sysスキーマが影響を受けないようにするためのものです。

    mysql.sessionは、各種プラグインがサーバにアクセスするために使われるアカウントです。

    rootアカウントが2つある理由は、接続元ごとにユーザが作成できるため

    ユーザ一覧を確認するとrootアカウントが2つあるのがわかります。ひとつはhostが「%」、もうひとつはhostが「localhost」となっています。

    root@localhostは、MySQLサーバ上からMySQLにローカル接続する際に使われるアカウントです。一方、root@%は、それ以外の場所から接続したrootアカウントを指します。

    例えば、以下のように設定すると、リモート接続してきたrootアカウントに全権限を与えることになります。

    小規模な開発環境では使い道はありますが、全権限を持つユーザがリモート接続できるので、セキュリティ面で問題有りと言えるでしょう。

    ユーザ名と権限一覧を確認する

    各ユーザが持つ権限一覧を表示するには、以下のSQLを実行します。全データベース・全テーブルに対するグローバル権限、データベースごとの権限、データベースのテーブルごとの権限、テーブルのカラムごとの権限の4種類が確認できます。

    mysql.userのカラム一覧を確認する

    MySQLのユーザ一覧は、mysql.userテーブルのカラムをselect文で取得することで表示します。

    mysql.userのカラム一覧は、以下のSQLで確認できます。

    MySQL5.7では、passwordカラムがなくなり、authentication_string にパスワードのハッシュ値が格納されるようになるなど、バージョンにより仕様が変わることがあります。

    ユーザ名とパスワードを確認する

    MySQL5.7で、ユーザ名とパスワードのハッシュ値を確認するには、以下のSQLを実行します。

    authentication_stringは、パスワードのハッシュ値が格納されています。この情報から、元のパスワードを知ることはできません。

    まとめ

    ポテパンダの一言メモ
    • MySQLでユーザ一覧を確認するには、mysql.userテーブルをselect
    • アカウントは接続元ごとに設定が可能
    • ユーザ名と権限の一覧は、information_schemaテーブルをselectする
    • MySQLユーザのパスワードは、ハッシュ値のみが格納されていて、元のパスワードを復元することはできない


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE