MySQLを起動すると「No directory, logging in with HOME=/」と表示される

MySQLを起動しようとすると、次のようになる。
起動は成功するが、「No directory, logging in with HOME=/」というメッセージがでている。

root@ubuntu:~# /etc/init.d/mysql start
No directory, logging in with HOME=/
......
 * MySQL Community Server 5.6.20 is started

ログインする際のHOMEディレクトリが無いことを意味するメッセージのように見える。
これは一体誰のHOMEディレクトリが無いといっているのか?rootで起動を実行しているので、rootだろうか?
まず、rootのHOMEディレクトリを確認する。

root@ubuntu:~# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash

rootのHOMEディレクトリは/rootとして存在している。
それでは、mysqlインスタンスを起動するユーザだろうということで、/etc/mysql/my.cnfを確認して、起動ユーザを確認する。

#less /etc/mysql/my.cnf
[mysqld]
user            = mysql

mysqlユーザで起動している。
mysqlユーザのHOMEディレクトリを確認する。

root@ubuntu:~# cat /etc/passwd | grep mysql
mysql:x:117:126:MySQL Server,,,:/nonexistent:/bin/false

えええええええええええ、HOMEディレクトリが「/nonexistent」になっている。なんで?

mysqlのHOMEディレクトリを作成する。

root@ubuntu:~# mkdir /home/mysql
root@ubuntu:~# chown mysql /home/mysql/
root@ubuntu:~# ls -l /home/
total 8
drwxr-xr-x  2 mysql root 4096 Sep 14 17:30 mysql
drwxr-xr-x 21 rio   rio  4096 Sep 14 13:07 rio
root@ubuntu:~# chgrp mysql /home/mysql/
root@ubuntu:~# ls -l /home/
total 8
drwxr-xr-x  2 mysql mysql 4096 Sep 14 17:30 mysql
drwxr-xr-x 21 rio   rio   4096 Sep 14 13:07 rio

mysqlのHOMEディレクトリを/home/mysqlに設定する。

root@ubuntu:~# usermod -d /home/mysql/ mysql
usermod: user mysql is currently used by process 6351

プロセスID6351に使用されているため変更できない。おそらくmysqldだろうが何のプロセスかを確認してプロセスをとめる。

root@ubuntu:~# ps aux | grep 6351
mysql     6351  0.0  0.0   2268   640 ?        S    17:32   0:00 /bin/sh /usr/bin/mysqld_safe --skip-syslog
root      6680  0.0  0.0   4680   820 pts/3    S+   17:36   0:00 grep --color=auto 6351

やはりmysqldなので停止する。

root@ubuntu:~# /etc/init.d/mysql stop
....
 * MySQL Community Server 5.6.20 is stopped
root@ubuntu:~# ps aux | grep 6351
root      6729  0.0  0.0   4680   820 pts/3    S+   17:38   0:00 grep --color=auto 6351

改めてmysqlユーザのHOMEディレクトリを変更する。

root@ubuntu:~# usermod -d /home/mysql/ mysql

mysqlユーザのHOMEディレクトリを確認する。

root@ubuntu:~# cat /etc/passwd | grep mysql
mysql:x:117:126:MySQL Server,,,:/home/mysql/:/bin/false

mysqlを起動する。

root@ubuntu:~# /etc/init.d/mysql start
......
 * MySQL Community Server 5.6.20 is started

エラーメッセージが消えた。
解決したが、どうしてこのようになったかは不明・・・。