以前の記事でUSAGEはno privilegeであることを学んだ。
では、privilegeはどうすればよいのか。
以下がその構文です。
GRANT ALL ON databaseName.* TO "USER_NAME";
上記でユーザに
privilegeをGRANTできる!
以前の記事でUSAGEはno privilegeであることを学んだ。
では、privilegeはどうすればよいのか。
以下がその構文です。
GRANT ALL ON databaseName.* TO "USER_NAME";
上記でユーザに
privilegeをGRANTできる!
USAGEの記事で取り消し線を使用する自体発生
今後も訂正・修正しながら人生を歩んでいきたい。(あんまりやりすぎると信用なくなるかも)
だがしかし、必要なことは訂正していくのだ。
チルダを二つ重ねて、訂正したい箇所を囲むことで訂正できる。
以下書き方
\~~yattemimasu~~
~~yattemimasu~~
やった!
人生の中の過ちも簡単に修正できたらいけれどそうはいかないわけで、しっかりきっちり、情報を丁寧に扱っていくことを改めて思う。
以下の権限の確認をするための構文で出会った単語 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
"Theuser
tableplugin
,Password
, andauthentication_string
columns store authentication plugin and credential information. In MySQL 5.7.6, thePassword
column was removed and all credentials are stored in theauthentication_string
column. "
MySQL5.7が境目
mysqlで出力されるテーブルをマークダウンで記述すると下記のように表記がぶれてしまい使えないことが判明。
+———+———————–+——————+——————-+
| user | password_last_changed | password_expired | password_lifetime |
+———+———————–+——————+——————-+
| student | 2017-05-14 02:26:18 | N | NULL |
+———+———————–+——————+——————-+
解決案も模索していると、マークダウンでテーブル表記することができると判明。
早速試すことに。記述のルールは以下。
Github
https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
Qiita
http://qiita.com/tbpgr/items/989c6badefff69377da7
はてな
http://seeku.hateblo.jp/entry/2013/05/24/080851
| Left align | Right align | Center align |
|:———–|————:|:————:|
| This | This | This |
| column | column | column |
| will | will | will |
| be | be | be |
| left | right | center |
| aligned | aligned | aligned |
表記乱れ申しわけです。
以下に適応しました。
user | password_last_changed | password_expired | password_lifetime |
---|---|---|---|
student | 2017-05-14 02:26:18 | N | NULL |
きれいなテーブルの完成。
以前ユーザを作成する際に確認方法として以下のselect構文を使用してmysql.user(mysqlデータベース内のuserテーブル)の中からhostとuserとpasswordを表示させることで確認できるとしたが、今回改めて下記の構文を使用したところうまく表示されなかった。
SELECT USER,HOST,PASSWORD from mysql.user
下記がエラーメッセージ
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
そんなカラム無いよとのことらしい。
おかしいな紹介されていたから無いはず無いのだけどなと思ったが、とりあえずuserテーブルにどんな属性が設定されているか確認することにした。
あまり詳しくない僕はとりあえず、select文ですべて表示することにした。
select * from mysql.user from user ="student";
select文で表示するとにした。
上記で表示したところカラムが多すぎて画面に収まらず横に長いディスプレイが欲しくなった。
とりあえず、上記で表示された(*1)カラム名の中にpasswordと言うかラムが存在するか目視で確認したところ数件発見
| password_expired | password_last_changed | password_lifetime |
みたところ全部違いそうだったけれど一応意味のメモ
password_expired:期限切れのパスワード
password_last_changed:最終更新日
password_lifetime:パスワードが有効な期間のサイクル
https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html
URL先を参照してもpasswordというかラムは存在していない。
リンク先のセキュリティ情報という分類の中にも存在していなかった。
Security columns | ssl_type |
---|---|
ssl_cipher | |
x509_issuer | |
x509_subject | |
plugin | |
authentication_string | |
password_expired | |
password_last_changed | |
password_lifetime | |
account_locked |
上記の中で該当しそうなカラムは、authentication_stringかなと思い確認してみることに。
こちらは、セキュリティの認証情報が格納されているカラムとのこと。
passwordそのものでなく、passwordをhash化したデータが格納されている。
そのため、authentication_stringという名を(*2)翳しているのかなとおもいました。
非可逆なカラムで他者からは見えない、セキリティ上当然の使用であることを恥ずかしながら今更知ったというところでした。
一旦下記にstudentの情報を吐き出す。
select user,password_last_changed ,password_expired,password_lifetime from mysql.user where user = 'student';
user | password_last_changed | password_expired | password_lifetime |
---|---|---|---|
student | 2017-05-14 02:26:18 | N | NULL |
authentication_string は以下
select user,password_last_changed ,password_expired,password_lifetime ,authentication_string from mysql.user where user = 'student';
user | password_last_changed | password_expired | password_lifetime | authentication_string |
---|---|---|---|---|
student | 2017-05-14 02:26:18 | N | NULL | *5C9A4E4AB5E34FC99610372BA8D061F994CFFB94 |
今回はselect文でどんな属性情報がテーブルに登録されているか確認したが、この記録をするために調べたところ、別途構文が存在していること知る。以下がそれです。
use 'database_name'; desc 'table_name';
上記で簡単に属性情報を閲覧することができる。
以下はuserテーブルに登録されているカラム名の一覧と型および制約情報などのviewtableです。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
Host | char(60) | NO | PRI | ||
User | char(32) | NO | PRI | ||
Select_priv | enum(‘N’,‘Y’) | NO | N | ||
Insert_priv | enum(‘N’,‘Y’) | NO | N | ||
Update_priv | enum(‘N’,‘Y’) | NO | N | ||
Delete_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_priv | enum(‘N’,‘Y’) | NO | N | ||
Drop_priv | enum(‘N’,‘Y’) | NO | N | ||
Reload_priv | enum(‘N’,‘Y’) | NO | N | ||
Shutdown_priv | enum(‘N’,‘Y’) | NO | N | ||
Process_priv | enum(‘N’,‘Y’) | NO | N | ||
File_priv | enum(‘N’,‘Y’) | NO | N | ||
Grant_priv | enum(‘N’,‘Y’) | NO | N | ||
References_priv | enum(‘N’,‘Y’) | NO | N | ||
Index_priv | enum(‘N’,‘Y’) | NO | N | ||
Alter_priv | enum(‘N’,‘Y’) | NO | N | ||
Show_db_priv | enum(‘N’,‘Y’) | NO | N | ||
Super_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_tmp_table_priv | enum(‘N’,‘Y’) | NO | N | ||
Lock_tables_priv | enum(‘N’,‘Y’) | NO | N | ||
Execute_priv | enum(‘N’,‘Y’) | NO | N | ||
Repl_slave_priv | enum(‘N’,‘Y’) | NO | N | ||
Repl_client_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_view_priv | enum(‘N’,‘Y’) | NO | N | ||
Show_view_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_routine_priv | enum(‘N’,‘Y’) | NO | N | ||
Alter_routine_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_user_priv | enum(‘N’,‘Y’) | NO | N | ||
Event_priv | enum(‘N’,‘Y’) | NO | N | ||
Trigger_priv | enum(‘N’,‘Y’) | NO | N | ||
Create_tablespace_priv | enum(‘N’,‘Y’) | NO | N | ||
ssl_type | enum(‘’,‘ANY’,‘X509’,‘SPECIFIED’) | NO | |||
ssl_cipher | blob | NO | NULL | ||
x509_issuer | blob | NO | NULL | ||
x509_subject | blob | NO | NULL | ||
max_questions | int(11) unsigned | NO | 0 | ||
max_updates | int(11) unsigned | NO | 0 | ||
max_connections | int(11) unsigned | NO | 0 | ||
max_user_connections | int(11) unsigned | NO | 0 | ||
plugin | char(64) | NO | mysql_native_password | ||
authentication_string | text | YES | NULL | ||
password_expired | enum(‘N’,‘Y’) | NO | N | ||
password_last_changed | timestamp | YES | NULL | ||
password_lifetime | smallint(5) unsigned | YES | NULL | ||
account_locked | enum(‘N’,‘Y’) | NO | N |
上記のテーブルを見て今までboolean型bit(1)を使用していたけれどenum(‘N’,‘Y’)を使用していることに気づきました。
mysqlに標準で付いているテーブルに登録されている属性が列挙型のY/Nになっているのでそちらの方のメリットデメリットを再考する必要があるなと感じました。
まだまだわからないことがたくさんあるので学んでいきたい。
(1)カラム名 :属性、カラム名、属性名、列名、などの表記の乱れが文章中に存在しています。ネット上の情報を見るとfield name やフィールド名などともいうそうでどれを使えば通じるのかイマイチよくわからないのが現状です。
(2)翳して:その名を付けた器などという風に、通り名(?)がついた状態の時に使う言葉だと思っていましたが、辞書で調べてみたらその意味は記述されていませんでした。
①手に持って頭上に高くかかげる。 「団旗を-・して進む」 ②物の上方におおいかけるように手をさしだす。 「火鉢に手を-・す」 ③光などをさえぎるために、手などを額のあたりに持っていっておおう。 「小手を-・す」出典|三省堂大辞林 第三版について | 情報
https://kotobank.jp/word/%E7%BF%B3%E3%81%99-461674
すこし頑固なので表記を変えず使ってみました。
イメージした用例は、正宗の名を翳(かざ)した名刀などです。
許されがたいかも