権限の削除MySQL

背景

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内に存在しないデータベースの権限も付与する事ができることがわかった。
少しづつ少しづつ頑張っていこう。

マークダウンで取り消し線

USAGEの記事で取り消し線を使用する自体発生
今後も訂正・修正しながら人生を歩んでいきたい。(あんまりやりすぎると信用なくなるかも)
だがしかし、必要なことは訂正していくのだ。

チルダを二つ重ねて、訂正したい箇所を囲むことで訂正できる。

以下書き方

\~~yattemimasu~~  
~~yattemimasu~~  

やった!

人生の中の過ちも簡単に修正できたらいけれどそうはいかないわけで、しっかりきっちり、情報を丁寧に扱っていくことを改めて思う。

USAGEについて

Usageの意味は使用することと記述した記事をエントリした。
その中に、MySQLの構文の意味としては、使用権限を与えるのような言葉を記述したが、間違った認識をしていたことが判明した。

以下がUSAGEを使用したGRANT命令の構文である。

GRANT USAGE databaseName.* to UserName  

意味は、no privilege 権限なしと同義である。

感想

正反対の機能を持たせる構文であることに戸惑いを隠せないが間違いを訂正しながら生きていくことは大事。
間違ったことを書かかないようにしっかりしようと思います。

あと、勉強になったです。

新しい英単語【USAGE】

背景

以下の権限の確認をするための構文で出会った単語 grantは承認する。与えるなどを意味として持つ語で、似た言葉にaward、gift、agree 、付与する 例:grant permission 権限を(譲渡、)与える。

GRANT USAGE ON *.* TO 'student'@'%'    

分からない語があったので調査
以下の辞書より引用
http://ejje.weblio.jp/conten t/usage

不可算名詞
a使うこと,使用; 利用.
b使用法,用い方,取り扱い(方).
This instrument will not stand rough usage. この器具は荒っぽい使い方に耐えられそうもない.
2不可算名詞 [具体的には 可算名詞] (言語の)慣用法,語法.
modern English usage 現代英語の用法.
3不可算名詞 [具体的には 可算名詞] 慣習,慣行,慣例.

まとめ

USAGEは使用という意味
studentが(データベースなどの)使用することを認めるのような意味にであること
訂正:正しくは権限なしを明示的に示すものでしたです。
以上今回は短いけれどここまでで終了です。

以前はパスワードカラムがあったという事実

https://yoku0825.blogspot.jp/2015/03/mysql-576mysqluser.html  

mysql> SELECT user, host, password FROM mysql.user;
+--------+--------------+-------------------------------------------+
| user   | host         | password                                  |
+--------+--------------+-------------------------------------------+
| root   | localhost    | *2AF14BD74D8A4FDB580D3208C0092BE75EE95B75 |
| root   | dd51374b09e7 | *2AF14BD74D8A4FDB580D3208C0092BE75EE95B75 |
| root   | 127.0.0.1    | *2AF14BD74D8A4FDB580D3208C0092BE75EE95B75 |
| root   | ::1          | *2AF14BD74D8A4FDB580D3208C0092BE75EE95B75 |
| fabric | %            | *BA4015F6659FB2A40463B9728083556079C45EE7 |
| app    | %            | *07C85F556938C8B845F807BCD7EA0B7A296072DC |
+--------+--------------+-------------------------------------------+
6 rows in set (0.11 sec)

バージョンアップでなくなった模様です。

 

https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html


"The
user table plugin, Password, and authentication_string columns store authentication plugin and credential information. In MySQL 5.7.6, the Password column was removed and all credentials are stored in the authentication_string column. "

MySQL5.7が境目

www.slideshare.net