mysqlにログインできなかった問題が解決した話

エラーその1
mysql -uroot したときにログインできないよエラー

1
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

こんな表示がされる
これは僕の環境だと単純に/tmp/ディレクトリにmysql.sockがなかったため。
なので、touchコマンドで作ってやった

で、mysql.server restrt しようとすると今度は…
エラーその2

1
2
3
4
5
6
touch: /usr/local/var/mysql/hogehoge.local.pid.shutdown: Permission denied
cat: /usr/local/var/mysql/hogehoge.local.pid: Permission denied
ERROR! MySQL server process # is not running!
override rw-r----- _mysql/_mysql for /usr/local/var/mysql/hogehoge.local.pid?
Starting MySQL
SUCCESS!

日本語でおk
なんかmysql走ってるぽい表示されてるけど、プロセス自体はない
このエラーはmysqlがファイル作りたいけど権限がなくて作れないよ〜ウエーンというエラー(たぶん)
なので、/usr/loca/var をls -llでみてみる

1
2
3
4
5
6
7
drwxr-xr-x   3 hogehoge    admin    102  6 19  2015 hoge
drwxr-xr-x 3 hogehoge admin 102 8 29 2015 fuga
drwxr-xr-x 3 hogehoge admin 102 8 13 2015 piyo
drwxr-xr-x 9 hogehoge admin 306 9 23 2015 poko
drwxr-xr-x 30 _mysql _mysql 1020 10 26 19:16 mysql
drwx------ 25 hogehoge admin 850 9 13 22:39 puka
drwxr-xr-x 2 hogehoge admin 68 8 29 2015 poka

なるほど、確かにmysqlディレクトリには書き込み権限自体はあるが、所有者が_mysqlになってて所有者自体に権限がなさそうだ
じゃあ、mysqlディレクトリを自分のユーザ名に変えてしまおう

1
chown -R your_username mysql

このコマンドで、mysqlディレクトリの所有者を再帰的にyour_usernameにしたところ、うまくログインできるようになった