ここ最近(多分Lion?)から、テスト用にWordpress環境を構築しようとMacOS Xのローカルにインストールしようとすると、wp-install時に
Error establishing a database connection
と出てくることがあります。
mysqldも起動してるし、データベースもちゃんと作ってるし、wp-config.phpも間違いなく書いてるのにdbにつなぐことができないということは、configより低レベルで何かが起こっているはず。
と調べてみると、どうもOSXのmysqlだけなんだか違うようでした。
# mysqlはMacOS X用のインストーラでインストールしたものです。
■ まずはmysql側
mysql -u xxx -p
でログインし、
> status
を打ち込むとだいたい以下が出てくると思います。
mysql> status
————–
mysql Ver 14.14 Distrib 5.5.20, for osx10.6 (i386) using readline 5.1
Connection id: 4
Current database:
Current user: user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.5.20-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 4 days 19 hours 17 min 52 sec
Threads: 1 Questions: 4 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.000
————–
↑ここで、
UNIX socket: /tmp/mysql.sock
と記述されています。
これがパッケージでインストールした場合のソケットパスです。
ところがどうもOSXのphpが見にいくソケットのデフォルトのパスと違うようなのです。
■ PHPの設定
まずはphp.iniの中身を見てみます。
$ sudo vi /etc/php.ini.default
pdo_mysql.default_socket=/var/mysql/mysql.sock
mysql.default_socket = /var/mysql/mysql.sock
mysqli.default_socket = /var/mysql/mysql.sock
になっています。
ここで2つの対処法があります。
1. php.iniの内容を編集
2. /var/mysql/mysql.sockに/tmp/mysql.sockへのシンボリックリンクを張る
最初は1.で対処していましたが、どうやら2.がおすすめです。
1. php.iniの内容を編集
php.iniの/var/mysql/mysql.sockそれぞれを/tmp/mysql.sockに変える。(このうちの2つはWordpress用には必要ないかもしれませんが…)
しかし…MacOS Xはプレーンの状態では読み込んでいるphp.iniがありません。
そこで、/etc/php.ini.defaultをphp.iniにコピーします。
パスはどこでもいいですが、OSXのPHPは/usr/local/lib/php.iniを読みに行くのでそこに作成するか、もしくは/etc/php.iniくらいに実ファイルを置き、そこに/usr/local…からのシンボリックリンクをつくります。
$ ln -s /etc/php.ini /usr/local/lib/php.ini
2. /var/mysql/mysql.sockに/tmp/mysql.sockへのシンボリックリンクを張る
/var/mysqlというディレクトリは存在しませんので、
$ sudo mkdir /var/mysql
$ sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
上記1.2.いずれかの対処をして、Apacheを再起動すればうまくいくはず。





























