読者です 読者をやめる 読者になる 読者になる

MySQLサーバが起動できない場合の対処方法

いろいろ原因はあるようだけど、一つのパターンということで。


MySQL のデータベースの位置を標準から変更すると、SELinux の制限に引っかかって起動できなくなることがある。


MySQL のデータベースの位置は /etc/my.cnf に

datadir=/hoge/hage

で指定することが出来る。


SELinux が有効になっていると、/var/log/mysqld.log に以下のようなメッセージが記録される。

130127 22:32:12 mysqld_safe Starting mysqld daemon with databases from /hoge/hage/mysql
130127 22:32:12 [Warning] Can't create test file /usr/temp/mysql/hostname.lower-test
130127 22:32:12 [Warning] Can't create test file /usr/temp/mysql/hostname.lower-test
130127 22:32:12  InnoDB: Initializing buffer pool, size = 8.0M
130127 22:32:12  InnoDB: Completed initialization of buffer pool
130127 22:32:12  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
130127 22:32:12 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

SELinux を無効にするか、mysqld_t、mysqld_safe に適切な許可設定をすることで mysqld が起動するようになる。