出たエラー
unitテストを普通にしていたらMySQLについて怒られた。
sa_as@hoge~
$ phpunit test/unit/app/Test.php
An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory
怒られた。見たことない。どうしよう。急。
そういえば直前にdatabase.ini的な何がしかをpullした気はする
いろいろ確認
優しい先輩方に言われて色々と調べるsa_as
sa_as@hoge~
$ mysql -uroot -p
Enter password:
mysql> select user,host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)
localhostで入れた。何の問題もなかろう?
sa_as@hoge~
// mysqlのversion確認
$ mysqladmin -uroot -p version
Enter password:
mysqladmin Ver 8.42 Distrib 5.7.10, for osx10.11 on x86_64
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.7.10
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 16 days 1 hour 33 min 36 sec
5.7ですね。(あれ、前職5.6だった気もする…そして先輩方も皆さん5.6らしい)
調べてみた
・初期ユーザの相違
MySQL 5.6までは”root@localhost”, “root@127.0.0.1”, “root@サーバのホスト名”など複数のrootアカウントと、yum版ではそれに加えて匿名ユーザ “”@localhost”などが作成されていましたが、MySQL 5.7では”root@localhost” のみを作成します。skip_name_resolveオプションが有効な環境下ではlocalhostと127.0.0.1は別のホストとして扱われるため、TCP接続の場合は注意してください。
んんん?
初期ユーザだからか
使ってるPC真っさらだから致し方なし(<-2月に転職しました。)
結論
- MySQL5.7にすると上記みたいにlocalhostと127.0.0.1は違うものとして扱われるので注意