LoginSignup
18
7

More than 5 years have passed since last update.

CakePHPでMySQLに接続しようとしたら「SQLSTATE[HY000] [2002] No such file or directory」と出た

Last updated at Posted at 2018-02-05

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.inimysql.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
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

こんな感じ↓
スクリーンショット 2018-02-05 21.01.23.png

【参考】
(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/

18
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
7