tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【mysql】mysql_install_dbやmysql_secure_installationでERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的なエラーのときの対処法

はじめに

mysqlのインストールのはじめのほうに、
データディレクトリ初期かスクリプト(mysql_install_db)や
セキュリティ設定スクリプト(mysql_secure_installation)叩きますが
たまーにうっかりこんなエラーを出してしまうことがあります

# mysql_install_db --verbose --user=`mysql` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

そんなときの対処法

対処法

対処法というほどでもないのですが、おおよそ下記が考えられます

  • mysql_install_dbのとき
  1. --user=mysqlで指定したユーザがいない
  2. --user=mysqlで指定したユーザがmysql.sockがあるディレクトリへの権限がない
  3. /tmp/mysql.sockファイルがない
  • mysql_secure_installationのとき
  1. mysqlを起動してない

なのでこれらをそれぞれ解消してあげます

1. --user=mysqlで指定したユーザがいない

ってことなので作ります。

つくりますっていうか、
--user=mysqlで指定したmysqlユーザなんて作るつもりないって場合は
使うユーザに適宜変えるってだけでも良いですしtypoも疑いましょう。

# sudo groupadd mysql
# udo useradd -m mysql -g mysql
# sudo passwd mysql

2. --user=mysqlで指定したユーザがmysql.sockがあるディレクトリへの権限がない

これもそのまま作ります

# pwd
/tmp

# ls -l
srwxr-xr-x 1 root root 0  6月 25 11:01 2014 mysql.sock

# sudo chown mysql:mysql mysql.sock
# sudo chmod 777 mysql.sock

# ls -l
srwxrwxrwx 1 mysql mysql 0  6月 25 11:01 2014 mysql.sock

3. /tmp/mysql.sockファイルがない

これはちょっと怪しいし検証してないですが、一応。。。

# touch /tmp/mysql.sock

必要であれば、上記の権限設定もしましょう。

とはいえ、手動touchしたところでソケットになってない気はしますが
これでいけたと聞いたこともちらほらあったりなかったり。。。

mysqlを起動してない

こちらは対処法を書くまでもないですが
起動してませんよとはエラーを出してはくれないのでエラーの際はわかりにくいです

起動方法は環境によって違うので合った方法で起動してから実行してみてください

まとめ

ってことで雑な記事ですが、なにげないメモってことで。