PHPとMySQL5.6の接続

socketファイルがバラバラで、 PHPからMySQLに接続するだけなのにずいぶんハマった。

MySQLのステータス確認

mysql> mysql \s
--------------
mysql  Ver 14.14 Distrib 5.6.12, for debian6.0 (x86_64) using  EditLine wrapper

Connection id:    	1
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.6.12-log MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			14 sec

Threads: 1  Questions: 5  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.357
--------------

MySQL設定ファイル

vi /etc/my.cnf
[client]
default-character-set=utf8
socket = /var/run/mysqld/mysqld.sock

[mysqld]
basedir = /opt/mysql/server-5.6
datadir = /data/mysql
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
skip-name-resolve
lower_case_table_names = 1
default-storage-engine = InnoDB
socket = /var/run/mysqld/mysqld.sock

general_log=1
general_log_file=/var/log/mysql/general.log
log_error=/var/log/mysql/error.log
pid-file=/var/log/mysql/mysql.pid
slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow-query.log
long_query_time =1

innodb_buffer_pool_size=64M
innodb_log_file_size=16M
innodb_flush_method=O_DIRECT
query_cache_size=128M
query_cache_limit=2M
query_cache_min_res_unit=4k
query_cache_type=1
tmp_table_size=128M
max_heap_table_size=128M
table_open_cache=1024
max_allowed_packet=1M
sort_buffer=256K
read_buffer_size=256K
read_rnd_buffer_size=256K
join_buffer_size=256K
key_buffer_size=16M
max_connections=256
thread_cache=256
wait_timeout=60

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

phpinfo()を確認してphp.iniを修正。

Configuration File (php.ini) Path    /etc/php5/fpm
Loaded Configuration File    /etc/php5/fpm/php.ini

pdo_mysql.default_socket    /var/run/mysqld/mysqld.sock
mysql.default_socket    /var/run/mysqld/mysqld.sock
mysqli.default_socket    /var/run/mysqld/mysqld.sock

php5-fpm、再起動

/etc/init.d/php5-fpm restart

参考 http://treeapps.hatenablog.com/entry/2013/02/10/my.conf%E3%81%AE%E5%A4%89%E6%9B%B4%E7%82%B9%E3%81%AE%E3%81%9B%E3%81%84%E3%81%A7%E3%81%AA%E3%81%8B%E3%81%AA%E3%81%8BMySQL5.6%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84%E4%BB%B6