NO_AUTO_CREATE_USER
今まで開発テストユーザーの作成は、下記のフローを使っていました。
- とりあえずテストユーザの権限を剥奪(権限がない場合は自動作成)
- ユーザーの削除
- ユーザの作成
- 権限追加
しかし!
MySQL5.7でいつものようにユーザーを作成しようとして、1でユーザーの自動生成をしようとすると…
ERROR 1133 (42000): Can't find any matching row in the user table
というエラーが発生します。存在しないユーザを指定するなってことですね(^^;;
調べてみたら5.7からはNO_AUTO_CREATE_USER
がデフォルトで有効になるみたいなので、とりあえず解決策を考えました。
sample.sql
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='';
GRANT USAGE ON *.* TO 'hoge'@'localhost';
DROP USER 'hoge'@'localhost';
CREATE USER 'hoge'@'localhost' IDENTIFIED BY 'hogehoge';
-- ここから権限作成
SET SQL_MODE=@OLD_SQL_MODE;
SQLモードが原因ならばそれを取り除けばいいじゃない!ってことですね。