More than 1 year has passed since last update.

全然違います

windows環境でCygWin入れてると怒られますよね?
※ Linuxでもとても難解な問題が出てくるので環境依存関係無いです(バグです)
mysql -uroot -p して怒られます。

ekaneko@hoge ~
$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)

こんな感じで怒られます。
省略した場合は localhost が暗黙で使用されるためです。
※ MySQL5.6.19 ソースより
127.0.0.1でやってみます。


ekaneko@hoge ~
$ mysql -h 127.0.0.1 -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.6.19-log MySQL Community Server (GPL)

Copyright (c) 2000, 2013, 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.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ************       |
| ************       |
| mysql              |
| mytest             |
| performance_schema |
| ************       |
| test               |
| world              |
| ************       |
| ************       |
+--------------------+
11 rows in set (0.00 sec)

mysql>

問題なくOKです。

違いは接続方法

ホスト名が localhost だった場合、パフォーマンスのためなのかソケットが暗黙で使用されます。
ですが。Windowsにはそんなの用意されてません。
その場合 127.0.0.1 を使うとTCP/IP接続が同PCであっても使用され問題なくTCP経由で接続できます。

覚える意味があるのか?

MySQLデーモンを二重化してポートをそれぞれに割り振った場合、面倒な事になります。
localhostを接続先ホストに指定すると、ポート指定のオプションを無視しsocket経由で接続しようとします。
Windowsの場合はつながらないだけですが、Linuxの場合はデフォルトソケット(ini記載かも?)に繋がってしまい、訳わからない状況になります。

mysql -h localhost -uroot -p --port=3307 こうやった場合でもポート指定が無視されちゃいます。
mysql -h 127.0.0.1 -uroot -p --port=3307 この場合はすんなり接続されるはずです(もう忘れました)

ソケット接続する場合は、事前にソケットを作成して、
それぞれのデーモンにソケットをそれぞれ割り当てちゃんと指定すれば動きます。たぶん。
mysql -uroot -p --socket=/var/run/mysql01.sock
mysql -uroot -p --socket=/var/run/mysql02.sock

あとがき

ソースを読めるって大切だよなぁって思います。
読みたくて読んでるわけじゃないけど、食べたくないけど食べないと体調悪くなるって感じと似てるよね。
だってそんなことしてるって思わないじゃない。

以上、メモでした

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.