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)

地味にハマるので注意。