cakePHPのチュートリアルを進めていたのですが、DB設定のところで、
「SQLSTATE[HY000] [2002] No such file or directory」というエラーが出て接続が確認できなかったので、色々調べて対応しました。
#原因
mysql.sock
というMySQLソケットに関するファイルがうまく読み込まれてないのが原因のようでした。
(config/app.php
の接続情報が正しいことは確認済み)
#対応
##mysql.sock
の場所を確認
# mysqladmin version
mysqladmin Ver 9.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Server version 10.1.26-MariaDB-0+deb9u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 min 37 sec
Threads: 1 Questions: 88 Slow queries: 0 Opens: 32 Flush tables: 1 Open tables: 26 Queries per second avg: 0.560
上記のUNIX socket
の項目に/var/run/mysqld/mysqld.sock
とありますが、これがmysqld.sock
のパスになります。
##mysql.sock
の場所をphpに教える
php.ini
にmysql.sock
のパスを記述します。
そのためにまずはphp.ini
の場所を見つけます。
# php -i | grep php.ini
//php -iでphpに関する情報を表示しつつ、grepでphp.iniの部分だけ検索して表示します
Configuration File (php.ini) Path => /usr/local/etc/php
Loaded Configuration File => /usr/local/etc/php/php.ini
次にphp.ini
に記述します。
PDOを使うため以下のように記述します。
# vim /usr/local/etc/php/php.ini
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
##MySQLサーバーを再起動
# service mysql restart
#確認
cakephpのビルトインサーバーを起動して、ブラウザからアクセスし、Databaseの項目に緑のコック帽がついていればOKです。
# bin/cake server -H 0.0.0.0 -p 80
【参考】
(mysql.sock関連)
https://www.mogumagu.com/wp/wordpress/archives/1198
(php.ini関連)
https://qiita.com/ug23/items/ab76a7104a0d073f1712
(SQL関連)
https://qiita.com/yusk24/items/923305e5acae19f6976d
https://webkaru.net/mysql/mysql-root-password/