mysqlの初心者小ネタ

少しハマッたのでメモ

 

mysqlのqueryでシングルクォートとバッククォート使い分けてますか?

エラーがでるまで、シングルクォートしか使ってなかったので、困ってはいませんでした。

 

複数DBの全てのテーブルに許可を与えたいときにsyntaxエラー吐いてました。

GRANT SELECT, INSERT, DELETE, CREATE, DROP ON ‘hoge_moge%’.* TO foo@’localhost’;

これが間違いの始まりでした。

正しくは

GRANT SELECT, INSERT, DELETE, CREATE, DROP ON `hoge_moge%`.* TO foo@’localhost’;

違いが分るでしょうか。

データベースとホストどちらもシングルクォートで括っていますね。

どのように使い分けるかといいますと

・テーブル、フィールドはバッククォート

・値はシングルクォート

 

もうひとつMERGEテーブルについて

上記で作成した

 

group by で複数カラムをグルーピングする場合はカンマで繋げます

因みに、対象となるカラムにNULLが入っている場合はグルーピングできずに結果が返ってこないので注意が必要です。

select date,hour from date where date=’2013-02-10′ group by date,hour;

 

 

grant all on *.* to hoge@’localhost’ identified password ‘C9EB6F0915B6B10A605685C24EBF68932A398E7C’;

ここにはいるパスワードってhash化されてるけどどうやって調べたらいいの?

mysql> select password(‘testdayo’);

+——————————————-+
| password(‘testdayo’) |
+——————————————-+
| *C9EB6F0915B6B10A605685C24EBF68932A398E7C |
+——————————————-+

こうやって調べます。

 

Comments are closed.