Archive for MySQL

Redmine 1.3 Subversion 1.6.11 連携 Basic認証エラー mod_auth_mysql

環境、CentOS6.2、Apache2.2.15、Redmine1.3、Subversion1.6.11、Mysql5.5.20

Redmine1.3を使用しRedmineのユーザーをWebBasic認証(mod_auth_mysql)とリンクさせて使用する際にエラーとなったので覚書しとく

基本的に上位アプリは正しくセットアップされて単独で動く状態からの処理となる

原因はRedmine1.2よりパスワード保持方法が変更となった、この変更にmod_auth_mysqlがついていけないことが原因。(SHA1+saltとなった)

1.mod_auth_mysqlのソースをここからDownload

2.Mysql5.0系用のpacheをDownし「1」のソースファイル当てる

3.Redmineで使用している認証方法をここからDownし「2」のソースファイル当てる

これでソースのある下位層まで「cd」してコンパイル開始Go!

/usr/sbin/apxs -ci -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -lz -lm mod_auth_mysql.c

・・・

「make_scrambled_password error」となりコンパイルが通らない・・・

どうやら「make_scrambled_password」用のシンボリックリンクが見つからないらしい、Mysqlのソースを追加すれば行けそうだけど、そもそも「make_scrambled_password」を使用する気はないので、コメントアウトとする。

make_scrambled_password関連個所のソースをコメントにし、再度コンパイル・・・

無事に「mod_auth_mysql.so」完成!

使ってみる・・・OKそう

AuthMySQLEnable On
AuthMySQLSocket /var/lib/mysql/mysql.sock
AuthMySQLHost [DB Host名]
AuthMySQLUser [DB接続User名]
AuthMySQLPassword [DB接続PW]
AuthMySQLDB [接続DB名]
AuthMySQLUserTable [確認Table名]
AuthMySQLNameField [確認IDフィールド名]
AuthMySQLPasswordField [確認PWフィールド名]
AuthMySQLSaltField salt
AuthMySQLPwEncryption sha1-rm
AuthMySQLNoPasswd Off
#AuthMySQLCharacterSet UTF-8
 
#AuthGroupFile /dev/null
AuthType Basic
AuthName "Authorization SVN"
Require valid-user

編集ソースとコンパイル後のファイルを置いておきますが、何が起こっても自己責任でお願いしますね。

DB Designer 4でMySQLに接続できない?

最近は便利なツールが沢山ありますね!
昔はセコセコとExcelに書き出していたものを・・・・

っと思い出にフケってないで本題です(苦笑)

DB設計&運用&作成&既存システムの解析するときに仕様書としてER図などを作成しますが、DB自体からリバースエンジニアリングし、お手軽に作成してしまおう!ってのが最近の流行りだと思います・・・・が(私だけ?)

ってことでMySQL用に作成してあり、仕様をある程度合わせて作られているツールを探したところDB Designer 4が見つかりました!

いざDownしてMySQL5.1と接続したら・・・・・「ID,Passが違う!」と接続できない?

はて?

ググル・・・

どうやら、MySQL4.1以降のパスワードハッシュ方法変更の影響を受けているらしい?

セキュリティレベルは落ちるが開発環境なので旧ハッシュにしてあげる
 

-- hoge@localhost = ID@Host
-- hogepass = パスワード
 set password for hoge@localhost = OLD_PASSWORD('hogepass');

これで行けるようになった(笑)

ちなみに最新プロジェクトは「DB Designer Fork」と言う名前になっているらしい?こちらは英語版だが新ハッシュ方法のID,PassもOKだったよ。

Dataフォルダ内のファイルを差し替えれば、ある程度は日本語表示になる。

また、最近はMySQL Workbenchってのがあるが、ほしい機能は有料版なり・・・

P.S 「A5:SQL Mk-2」というフリーのSQL開発ツールも良いです。(作者様、感謝!)

WordPress ME2.0系から2.2系にお引越し(EUC-JPからUTF-8に)

昨今のServerサイドのWeb環境文字コードはMS=Shift_JIS、Linux=EUC-JPだったが、
どうやらUTF-8に落ち着いてきたらしい。
他国の言葉もこれで一括対応出来る、マルチ言語対応が楽だからだろう:roll:

UTF-8は1Byteから4Byteで1文字を表現する可変文字コードである、
多少脆弱性の問題などあるらしいがこれが主力の文字コードときっとなるなぁ~詳しくはWiki等で:razz:

さて、Wordpress MEも2.2系からUTF-8のみの対応になったらしく、
今後、EUC版はバージョンアップが出来なくなるので、

現在のphp4系、MySQL4.0系、Web文字コードEUC-JP環境から
新版のphp5系、MySQL5.0系、Web文字コードUTF-8環境にお引越しをやります。
さらに試しにドメイン名も変えちゃいます!

もちろん、問題点が続発したので記述しておきます:evil:

作業順序
1.旧Wordpress2.0系のコンテンツ及びDB BackUp
2.新サーバーにBackUpをコピーし、起動&正常動作確認
3.Wordpress2.2を上書きしVersionUp、起動&正常動作確認

こんなところでまず

1.旧Wordpress2.0系のコンテンツ及びDB BackUp

・phpMyAdminでテーブル群をsqlとしてバイナリファイルでBackUp
 この時にCreate Databaseはいらない
・コンテンツをFTPツールでBackUp
・・・無事に終了

2.新サーバーにBackUpをコピーし、起動&正常動作確認

・sqlファイルをバイナリーEditで開き、URLとサーバーパスを置換で変更、普通のEditだと駄目ですよ:cool:
 例:URLは「hoge.mein.jp/blog」などを「hoge2.main.jp/blogman」に置換
 例:Server内コンテンツPathは「/usr/local/htdocs」などを「/usr/local/htdocs2」に置換
 あくまでドメイン(URL)を変える時なので変えない人は上記作業はいらない
・phpMyAdminで新規DBを作成する。文字コードは「UTF8」なので照会は「UTF8_unicode_ci」でCreate!
・先ほどBackup&編集したsqlファイルをphpMyAdminで作成したDBに対してインポート処理
 BackupしたsqlファイルはEUC-JPなので、ファイル種類のオプションは「eucjpms」にしてsqlオプションは「MySQL4.0」互換でGo!
・FTPでbackUpコンテンツをUpLoad!

完了!・・・・と行きたい所だけど、もちろんそうは問屋が卸さない:cry:

問題点
1.Wordpress内のオプションの文字コードがEUCのまま
 
2.これまたオプションのrole権限がEUCのまま
 「Warning: Invalid argument supplied for foreach() in /XXXX/wp-includes/capabilities.php on line 19」などのエラーがでる
 
3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする
 UTF-8はASCIIと互換があるのでASCII系の文字列の場合はEUCファイルでも問題ないが、日本語を使用しているWordpressファイルは基本的に文字化け対象に・・・
 
4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要
 MySQLがUTF-8の場合、アクセス時に教える必要がある。
 
5.wp-config.phpの修正

解決方法 (注:DB系のプレフィックス文字「wp_」は環境により違う)
1.Wordpress内のオプションの文字コードがEUCのまま

A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「blog_charset」のレコードを開くそして「option_value」値を「UTF-8」に変更しUpdate!

2.これまたオプションのrole権限がEUCのまま

A.phpMyAdminで「wp_options」テーブルを開き、option_nameが「wp_user_roles」のレコードを開く、「option_value」値が

「a:5:{s:13:"administrator";a:2:{s:4:"name";s:6:"管理人";s:12:"capabilities";a:31:」

などになってると思いますが、ここがみそで「s:13:”administrator”」はs:13とは文字数を表していてEUCでもUTF-8でも”administrator”は13Byteなのですが、「s:6:”管理人”」などはEUCだと全角2Byte×3=6Byteですが、UTF-8だと全角が3Byteなので=9Byteでなくてはいけません。なので「s:9:”管理人”」として、他にも漢字、ひらがながあれば同じように修正してからDBをUpdateする。

3.テーマファイルがEUCのままなので日本語を使用している場合は文字化けする

A.これはEUCファイルをUTF-8文字コードに変換できるツールで修正して:razz:
KanjiTranslatorなど良いですよ!

4.Wordpress2.0系のdbアクセス部分にMySQL5.0系のUTF-8に対応するコードが必要

A.これはphpファイルを修正する必要があります。
「wp-includes/wp-db.php」ファイルの以下の部分に「 mysql_query(“SET NAMES utf8″, $this->dbh); 」を追加する

function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
if (!$this->dbh) {
...
}
mysql_query("SET NAMES utf8", $this->dbh);
$this->select($dbname);

5.wp-config.phpの修正
A.これはEUCの部分をUTF-8と変えてください。
また、2.2系からconfigに追加がありますので詳しくはWordpressMEを参照して:roll:

以上の対応で修正完了、そのあとWordpress2.2系を上書きコピーしてupgradeすればOK:razz:

関係ないけどこんなのありました!
FFFTPでUTF-8を扱える拡張版・・・ここに・・・作者さん使わせて頂きます!感謝