Perl で、DBD::mysql モジュールを使って MySQL のデータベースに接続しているのだが、
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at hogehoge.pl line 97
というエラーになって接続出来ず。
この間書いたエントリー「MTOS で MySQL の Socket が見つからない時」と同じパターンじゃね。
これは、DB に接続する時に、
$dbname = 'hogehoge';
$user = 'hogeuser';
$passwd = 'hogepass';
$host = 'localhost';
$port = '3306';
$option = 'mysql_socket=/tmp/mysql.sock';$dbh = DBI->connect("dbi:mysql:$dbname:$host:$port;$option", "$user", "$passwd");
と、オプションでソケットの位置を明示的に指定してやればOK。
しかし、何で my.cnf の socket 指定は読んでくれんのかね?
/etc/my.cnf には、
socket = /tmp/mysql.sock
と書いているのだが。この値を使ってくれないの?
/etc/my.cnf に、
mysql_socket = /tmp/mysql.sock
なんて書くと
[ERROR] /usr/local/mysql/libexec/mysqld: unknown variable 'mysql_socket=/tmp/mysql.sock'
って怒られるしね。
まあ、取りあえず動いているので良いが、釈然としないな。誰かエロい、いや、エラい人、MySQL のこと教えて!