背景
GRANT ALL ON databaseName.* to userName;
でprivilegeを付与したが、その前に
GRANT USAGE ON databaseName.* to userName;
試み
で no privilege 状態にしていたため、権限が剥奪された状態になっていた。
解除するために権限を削除する構文を用いてprivilege of USAGE を削除することを試みる
revoke all on databaseName.* from username
失敗
。。。が、USAGE権限は削除できなことが判明した。
なぜそこでホスト設定をしていないことが原因かと考えホストを追加しようとしたが方法が見つけられなかったためuser をdropして戦うことに。
しかしうまくいかない。。。
ここまで副次的な知見
- ワイルドカードはローカルホストを含まない 少し古いので精査が必要 http://b.l0g.jp/mysql/user-at-localhost/
- revokeでUSAGE権限を削除できない。
- hostをあとで設定することは非常に面倒
- hostの設定をすることは安全性を高めることにつながる。
過ちへの気づきと対応について
データベースの中にカラムが存在していないからかと思い一旦、EclipseのERMaterから列名情報を注入しようと思いrootからデータを注入しようと試みる。
ここでerorr。ここでようやくデータベース名が違うことを認識。
address_bookというデータベース名だと思っていたら、address_booksという名前だった。
反省
データベース名はしっかり確認する。
副次的知見2
DBMS内に存在しないデータベースの権限も付与する事ができることがわかった。
少しづつ少しづつ頑張っていこう。