忍者ブログ

カウンター

プロモーション

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


No Image

MySQL で as で選択した内容をテーブルにできるんだった

MySQL の調べ物

久しぶりにSQL を触ってとても単純な事を忘れて戸惑った(ブログも超久しぶりに書いた)

SELECT a,b FROM (select 1 as a,2 as b) as x
UNION
SELECT a,b FROM (select 2 as a,3 as b) as x
UNION
SELECT a,b FROM (select 4 as a,5 as b, 6 as c, 7 as d) as x


また変な誤解で
as tables とか as table
は、別のものだと思ってた

完全に何だろう?と思っていた
table とかtables とか使っている例は
単なる一時的な命名だった・・・

as はas で、それがカラムだったり、テーブルだったり、
状況に応じて変化する様だ

バカみたいだけど、結構、単純な事を知ったつもりで
知らずに通過してきたんだなって思える時がSQLについては多い・・・

プロシージャーとかを連続で使って
LIMIT 句に変数が使えなくて、
PREPARE を使って ? に入れると出来るとか
PHP のクエリー作成時にPHP側で処理している
やたらPHPに頼ったゴリゴリ書いて動かしてたりすると
気が付かないこととか多い。

プロシージャーで書くことは
やはりとてもメリットが大きいと思えて仕方ない^w^;(勉強や速度を含めた意味で)

拍手[0回]

PR

No Image

MySQL5.5 の GRANT ALL PRIVILEGES ON を使う場合にPASSWORD 句を使うのか!?

MySQL の調べ物

メモでっす^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 GRANTSSyntax”

項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 構文を埋め込みたいのに・・・・

どう料理するかな・・・・っと・・・


一応、個人的なメモでした<_ _>


拍手[0回]


No Image

phpMyAdmin で設定ファイルのパーミッションが正しくありません。書き込み可能になっていません と言われた!

MySQL の調べ物

最近まで自宅のLinux(debian)サーバーではphpMyAdmin は使っていなかったが、
使うようになったという、前回ブログの続きになります。

前回、
[phpMyAdmin でmcrypt が無いと言われた!]
という状況であったが、それは解決。

その後まだ、色々警告っぽいものがあったので、とりあえず取り払っておこうと思いました。

以下、
「設定ファイルが秘密のパスフレーズ (blowfish_secret) を必要とするようになりました」
と警告を受けたので、
config.sample.inc.php
というファイルをリネームし
Mysqli やらホストネームやら、パスフレーズやらを
設定しないといけないらしいので
(実は既に何か暫定初期値が設定済みであったので、ほとんど触らず)
config.inc.php
とリネームして
警告を消した直後の話です。



これをするとLinuxでは権限がどうとか以下の様に
「設定ファイルのパーミッションが正しくありません。書き込み可能になっていません」
言われてしまうので、
phpMyAdmin を導入したディレクトリにある
リネームした
config.inc.php
属性を755 などに変更しなければいけないということでした。
(そういえば、ディレクトリの属性も一応先に考え無しに755に変えました・・・w)

これで無事動いたとさ!めでたし!

以上、メモでした、お粗末<_ _>

拍手[3回]


No Image

phpMyAdmin でmcrypt が無いと言われた!

MySQL の調べ物

家で用いている黒箱PRO のDebian サーバーも
Windows も両方ともMySQL の各種操作と確認は手打ちで
ぶっちゃけ手打ちで全て確認していました・x・

でもやはりですね、手打ちにはテーブルやデータベース名、カラム名などの
うち間違いは結構頻繁にやらかしますね・w・

ネット上のホスティングサービスのレンタルサーバーでは
phpMyAdmin 使ってMySQL の操作してるのに、
自分で何かする時には手打ちで時間かけてるのかがよくわからんです-_-;

なんで?とか自分に突っ込みを入れたくなったので、
過去に入れて使っていなかったphpMyAdmin を動かそうと
久しぶりに管理画面を眺めて見た。

そうか・・・入れようと思って、画面が出てたし、
ログイン出来たからエラーメッセージなんて放置してた^^;

エラーメッセージには
「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」
とか書いてあった。

これネットで調べると
yum --enablerepo=remi install php-mcrypt
とかyumつかってますが、私はDebian使いのapt系派なので
とりあえず
aptitude show php-mcrypt
してみたら、無かった。

なのでネットで再び調べたら
aptitude show php5-mcrypt
とphp でなくphp5 と指定しているのを見つけたので
それを打って確認してみた。


# aptitude show php5-mcrypt
パッケージ: php5-mcrypt
状態: インストールされていません
バージョン: 5.3.3-7+squeeze14
優先度: 任意
セクション: php
メンテナ: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
展開サイズ: 90.1 k
依存: libc6 (>= 2.4), libltdl7 (>= 2.2.6b), libmcrypt4, phpapi-20090626+lfs,
        php5-common (= 5.3.3-7+squeeze14)
説明: MCrypt module for php5
 This package provides a module for MCrypt functions in PHP scripts.
 
 PHP5 is a widely-used general-purpose scripting language that is especially
 suited for Web development and can be embedded into HTML. The goal of the
 language is to allow web developers to write dynamically generated pages
 quickly. This version of PHP5 was built with the Suhosin patch.
ホームページ: http://www.php.net/


やっぱ入ってない゚w゚

なんで入れてみた。

# aptitude install php5-mcrypt
以下の新規パッケージがインストールされます:
  libltdl7{a} libmcrypt4{a} php5-mcrypt
更新: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
389 kB のアーカイブを取得する必要があります。展開後に 705 kB のディスク領域が新 たに消費されます。
先に進みますか? [Y/n/?] y
取得:1 http://ftp.jp.debian.org/debian/ squeeze/main libltdl7 armel 2.2.6b-2 [293 kB]
取得:2 http://ftp.jp.debian.org/debian/ squeeze/main libmcrypt4 armel 2.5.8-3.1 [81.0 kB]
取得:3 http://ftp.jp.debian.org/debian/ squeeze/main php5-mcrypt armel 5.3.3-7+squeeze14 [14.9 kB]
389 kB を 0秒 秒でダウンロードしました (450 kB/s)
未選択パッケージ libltdl7 を選択しています。
(データベースを読み込んでいます ... 現在 28765 個のファイルとディレクトリがイン ストールされています。)
(.../libltdl7_2.2.6b-2_armel.deb から) libltdl7 を展開しています...
未選択パッケージ libmcrypt4 を選択しています。
(.../libmcrypt4_2.5.8-3.1_armel.deb から) libmcrypt4 を展開しています...
未選択パッケージ php5-mcrypt を選択しています。
(.../php5-mcrypt_5.3.3-7+squeeze14_armel.deb から) php5-mcrypt を展開しています...
libapache2-mod-php5 のトリガを処理しています ...
Reloading web server config: apache2.
libltdl7 (2.2.6b-2) を設定しています ...
libmcrypt4 (2.5.8-3.1) を設定しています ...
php5-mcrypt (5.3.3-7+squeeze14) を設定しています ...


パッケージの追加は成功^^

それで管理画面をリロードしたら、まだ同様に
「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」
なので
# /etc/init.d/apache2 restart
をしてみて、再びリロードしてみたら出なくなった\^^/

以上、何時もの個人的なメモでした<_ _>


追伸:
この続きの設定でまだ警告が出ていたので取り払いました
[phpMyAdmin で設定ファイルのパーミッションが正しくありません。書き込み可能になっていません と言われた!]
以上、お粗末です<_ _>
 

拍手[0回]


No Image

MySQL の Warning: mysql: Option '--set-variable' is deprecated. Use --variable-name=value instead.

MySQL の調べ物

 Warning: mysql: Option '--set-variable' is deprecated. Use --variable-name=value instead.
とある時から出る様になった。

 前から思っているのだが、MySQL のコマンドは -- で書いてあったり、- のみだったり、
それが表記の都合なのか、それ自身がコマンドなのかわかりにくい。

 これはもっとMySQL の作りを学習しないといけないのだが、
とりあえず今回出る様になった理由だけは突き止めた。

 MySQL を使ってビープ音がうるさいので、
my.ini の中にある
--------------------------------------
[mysql]

default-character-set=sjis
--------------------------------------
に次の一行を付け足したのだ。

set-variable=no-beep

つまりこうなる。

--------------------------------------
[mysql]

default-character-set=sjis
set-variable=no-beep
--------------------------------------

これをするとWarning が発生してしまう様だ。

英語は得意ではないが、我流にWarning の内容を翻訳すると
Warning: mysql: Option '--set-variable' is deprecated.
警告:MySQL:オプション  '--指定する-変数' を反対する。

Use --variable-name=value instead.
使用する--変数-名前=値の代わりとして

良くわからないが、きっと書き方がコマンドライン上の書き方と
設定ファイル上の書き方があるのだろうか???

 とりあえずビープがならない様にしたその1行を警告しているのが
わかった。

 もしかすると、ビープが鳴らないことが危険なので知らせてくれているのか、
それとも書き方がまずいのかがわからない。

 しかしこの1行を加えると、ビープな鳴らないので構文はあっているし、
しっかりMySQL が解釈して動いている気がする。

 そのうちこのMySQL の--?-? 的な書き方に慣れるのと意味を理解することと、
このWarning の本当の意味と、Warning がビープが鳴らない事に対してならば、
表示されない様に出来るのかどうかも調べるべきだと思えた。

そのうちなんとかしたい。 (メモメモでした。)

PS:書き方が分かった
-----------------------------------------------------------------
[mysql]

default-character-set=utf8
no-beep
-----------------------------------------------------------------


この様に書けばよかったみたいです。
set-variable=は必要なかったみたいです。

default-character-set の値がsjis からutf8 になっているのは
私の環境が変わったからです、特に深い意味はありません。

 

拍手[0回]


[PR]