‘Unknown MySQL server host ‘localhost’ (0)’の対処方法

mysqladmin create [db_name] --use r=root --password=[password] --host=localhost --protocol=tcp

上記のコマンドを実行すると、怒られる。

error: 'Unknown MySQL server host 'localhost' (0)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'

「localhostなんて知らねえよ。」って感じですかね。言われたとおりに以下を実行してみる。

telnet localhost 3306
telnet: could not resolve localhost/3306: Name or service not known

うん。やっぱり「知らねえよ」みたいな感じのことを言われているっぽい。

試したこと

–protocol=tcpを消してみた

mysqladmin create [db_name] --use r=root --password=[password] --host=localhost

最初のコマンドから--protocol=tcpを消してみた。DB作れた!

なんとなく通信方式が原因?

mysqlの設定ファイルを確認

mysqlの設定ファイルを確認してみる。

sudo vi /etc/mysql/my.cnf
[client]
port            = 3306
・
・
・

[mysqld]
port            = 3306
・
・

ポートに関しては、それっぽい記述はあるように思える。
protocol=TCPを追加してみる。

[client]
port            = 3306
protocol        = TCP

再起動

sudo service mysql restart

最初のコマンドで実行

mysqladmin create [db_name] --use r=root --password=[password] --host=localhost --protocol=tcp

・・・変わらず!

ファイアーウォールの設定変更

Windowsのファイアーウォールの設定を変更してみた。この辺りの設定はあまり変えないほうがいいかも。

以下を参考
http://tokyo-ct.net/usr/kosaka/memo/port_win.html

【ファイル名を指定して実行】
「wf.msc」

【Windows10 の手順】
受信の規則 → 新しい規則 → ポート → TCP → 特定のローカルポート → 3306 → 接続を許可する

Windowsを再起動してみる。

最初のコマンドを実行

mysqladmin create [db_name] --use r=root --password=[password] --host=localhost --protocol=tcp

・・・変わらず!

ホスト名をIPアドレスに

--host=localhost--host=127.0.0.1にしてみる。

mysqladmin create [db_name] --use r=root --password=[password] --host=127.0.0.1 --protocol=tcp

・・・できた!

暫定的にこれでいいや。他の設定は消しました。Windowsのファイアーウォールはマジで戻しておきましょう。