メモでっす^w^;
えー・・・・・・
毎回環境を入れ替えるときに、ある程度の新しい目のバージョンの何かしら入れ替えるのですが、
今回はMySQL5.5 を入れてハマったことを記述します(ぁふんorz
とりあず、言える事。
GRANT 構文
GRANT ALL PRIVILEGES ON `テーブル名`.* TO `ユーザー名`@`ホスト名` IDENTIFIED BY `パスワード`;
では
動かない。
MySQL5.5 からは、GRANT を用いた方法で簡単にパスワードが変えられないもしくは、
変えにくいみみたいです。
なんで分かったか?
13.7.1.3 GRANT Syntax(MySQL5.5英語)
もしくは
8.5.1.3. GRANT 構文(MySQL5.1日本語)
に確認は
Section 13.7.5.22, “SHOW GRANTS
Syntax”
か
項8.5.5.22. 「SHOW GRANTS
構文
を見ようと書いてあったので、
そこを見ると、
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
で確認できる内容があったので、それを閲覧、
そこにあった構文を実行してみると、動くのに気がつきました。
どうも、
ハッシュ(41桁)のパスワードを書かなければ受け付けてくれません>x<;
構文は
GRANT ALL PRIVILEGES ON `テーブル名`.* TO `ユーザー名`@`ホスト名` IDENTIFIED BY PASSWORD ’ハッシュ(41桁)' WITH GRANT OPTION
これでやっと
動くのを確認しました。
問題なのはハッシュ(41桁)の部分
'*1234567890123456789012345678901234567890'
こんな感じの*を含む41桁なのですが、
これはどうもMySQL がパスワードの文字列から作るハッシュなので、
PASSWORD関数を用いて生成しなければいけないみたいです。
表示するには、
SELECT PASSEORD('ハッシュにするパスワード');
です。
参考:
4.3.11. MySQL 4.1 のパスワードハッシュ
11.10.2. 暗号化関数と圧縮関数
(こちらで他のPASSWORD 関数以外のハッシュはMySQL のパスワードに使うべきでないと
書いてあった、実際使うべきでないと言うよりも、使っても一致しなくなるので使えないです)
そうすると例えば
mysql> SELECT PASSWORD('test');
+-------------------------------------------+
| PASSWORD('test') |
+-------------------------------------------+
| *1234567890123456789012345678901234567890 |
+-------------------------------------------+
みたいに表示されるので、
現段階ですぐに変更したい場合には
PASSWORD の句にPASSWORD の関数から生成したハッシュになった
パスワードを埋め込むしか無さそうです。
というか、これが手っ取り早そうです?!
うん・・・ 簡単に1つのクエリーにGRANT 構文を埋め込みたいのに・・・・
どう料理するかな・・・・っと・・・
一応、個人的なメモでした<_ _>
コメント一覧