会員情報を格納しているテーブルにログインのためのパスワードがあるのですが、プログラムの知識が乏しい時期に作成したテーブルのため、パスワードを生でそのまま文字列として格納している。そのパスワードを全て一括でMD5ハッシュ化したい。そんな時に便利だった、置換するための関数「replace()」と、MD5でハッシュ化する関数「MD5()」のご紹介です。
実行は慎重に、自己責任でお願いします。
replace関数の例
MySQL上での置換処理は下記のSQL文で実行できます。
UPDATE `テーブル名` SET `カラム名` = REPLACE (カラム名, '置換対象文字列', '置換後文字');
例えばテーブル名が「user」、置換対象カラム名が「address」だとして下記のSQL文を実行します。
UPDATE `user` SET `address` = REPLACE (address, '府', '');
これにより、例えば「大阪府」は「大阪」に置換されます。
MD5ハッシュ関数の例
続いてMD5でのハッシュ化処理は下記のSQL文で実行できます。
SELECT MD5('文字列');
登録済みのパスワードをMD5でハッシュ化して置換する
上記例の組み合わせで、登録済みのパスワードをMD5でハッシュ化して置換するSQL文がこちら。テーブル名が「user」、パスワードを格納しているカラム名が「password」だとします
UPDATE `user` SET `password` = REPLACE (password, password, MD5(password));
置換対象文字列は格納されている文字列そのまま、置換後文字はMD5でハッシュ化したpasswordの文字列を入れています。これでpasswordに格納されている文字を全てMD5でハッシュ化する事ができます
MySQLで使える文字列置換関数「replace()」と、MD5ハッシュ関数「MD5()」のご紹介でした。