MySQLのユーザ削除はdrop user 8.0以降は存在しないユーザの扱いが異なる
  • facebookページ
  • twitterページ
  • 2020.01.30

    MySQLのユーザ削除はdrop user 8.0以降は存在しないユーザの扱いが異なる

    MySQLのユーザ削除についてまとめています。

    以下の解説は、MySQL 8.0以降を前提にしています。

    MySQLのユーザ削除は、drop user

    MySQLのユーザ削除の構文

    以下の例は、現在のユーザ一覧を確認し、ユーザuser0@localhostを削除したあと、再度ユーザ一覧を確認して、削除が完了したことを確認しています。

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

    MySQL5.7.5以前では、存在しないユーザを削除しようとした場合にエラーになります。エラー回避のため、以下のようにいったんGRANTでユーザ権限をなしにから、DROP USERを実行するSQLを実行するケースがあります。

    ユーザが存在する場合は権限なしに設定され、ユーザが存在しない場合は権限のないユーザが作成されます。

    なお、この記述をすると、MySQL5.7.6以降では以下のwarningが出力されます。

    MySQL 5.7.6以降では、単純に以下のように記述すれば、存在しないユーザをドロップしようとした場合は無視されます。

    ユーザパスワードの削除は、alter userでパスワード上書き

    MySQLでは、厳密な意味でパスワードの削除を行うことはできません。特権を持ったユーザで、パスワードを上書きすることによって旧パスワードを削除することができます。

    なお、MySQL5.7以前で利用できたPASSWORD()関数は廃止されています。MySQL8.0以降では、以下のエラーとなります。

    ユーザ権限の削除はrevoke

    ユーザ権限を削除(剥奪)するには、以下のSQLを実行します。

    以下の例は、user0@localhostの権限を確認後、全てのデータベースの全てのテーブルから、権限を削除し、再度ユーザ権限を確認しています。

    まとめ

    ポテパンダの一言メモ
    • MySQLでユーザ削除するには、drop user
    • MySQL 5.7以前と8.0以降では存在しないユーザのdropに対する扱いが異なる
    • ユーザパスワードの削除は、alter userでパスワードを上書きする
    • ユーザ権限の削除は、revokeを使用


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

    この記事をシェア

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









    ABOUT US

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

    READ MORE