CakePHP로 MySQL에 접속하려고 하면 「SQLSTATE[HY000] [2002] No such file or directory」라고 나왔다

3371 단어 MySQLCakePHPmariadb
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

이런 느낌↓


【참고】
(mysql.sock 관련)
htps //w w. 모구마구. 이 m/wp/를 rdp 렛 s/아 r ゔぇ s/1198
(php.ini 관련)
htps : // m / u g23 / ms / ab76 7104 0d073f1712
(SQL 관련)
htps : // 코 m / 유 sk24 / ms / 923305 5 아카에 19f6976d
htps : // 우에 b 걸린다. 네 t/mysql/mysql-로오 t파스ぉ

좋은 웹페이지 즐겨찾기