はじめに
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)
地味にハマるので注意。