日: 2019年2月8日

  • ERROR 1396 (HY000): Operation DROP USER failed for

    ERROR 1396 (HY000): Operation DROP USER failed for

    はじめに

    mysqlのuser登録でhostを制限したいということはよくある。

    その際よく使うワイルドカードは%(パーセント)だ。

    しかし、うっかり/(スラッシュ)16のようにネットワークアドレスをそのまま入れてしまった際の対処を紹介。

    現在の状況

    思いっきり/16で登録してしまった

    +-----------------+----------------+
    | user            | host           |
    +-----------------+----------------+
    | root            | %              |
    | sample          | 172.40.0.0/16  |
    +-----------------+----------------+

    あるべき姿はこちら

    +-----------------+----------------+
    | user            | host           |
    +-----------------+----------------+
    | root            | %              |
    | sample          | 172.40.%       |
    +-----------------+----------------+

     

    普通に消そうとおもったら、

    “` ERROR 1396 (HY000): Operation DROP USER failed for “`

    というエラーになってしまった。

    mysql> DROP USER  ‘sample’@"172.40.0.0/16";
    ERROR 1396 (HY000): Operation DROP USER failed for '‘sample’'@'172.40.0.0/16'

    対処

    バッククォートで囲んでコマンドを実行する

    mysql> DROP USER `sample`@`172.40.0.0/16`;
    Query OK, 0 rows affected (0.00 sec)

    地味にハマるので注意。