Article ID: 119334, created on Feb 7, 2014, last review on Oct 15, 2015

  • Applies to:
  • Plesk for Linux/Unix

症状

本記事は、以下のいずれかの症状が発生したときに使用できます。

  • mysqld service restart を使用して起動/停止すると MySQL が正しく起動/停止するけれども、サーバを再起動しても MySQL が起動しない。
  • MySQL バイナリのアップグレード後に mysqld がまったく起動しない。
  • MySQL datadir を移動した後で、またはデフォルトポートの変更後に MySQL が起動しない。

すべての状況で共通している症状があります。'mysqld' サービスが以下のエラーで起動しません。

[root@server ~]# /etc/init.d/mysqld start
Another MySQL daemon already running with the same unix socket.
Starting mysqld:                                           [FAILED]

原因

MySQL サービスが正しく停止されなかった後で、ソケットが削除されませんでした。

解決策

ソケットファイルが削除されない状況には一般的なケースがいくつかあります。以下のケースをチェックし、該当する解決策を適用してください。

1. '/tmp' ディレクトリのパーミッションが正しくない

Centos 6.5 のデフォルトパーミッション:

    ls -ld /tmp
    drwxrwxrwt 3 root root 16384 Dec 23 17:32 /tmp

'/var/log/mysqld.log' を確認し、CentOS 6.5 の '/tmp' でパーミッションの問題が発生していることを示すメッセージがないかチェックします。これは 'mysqld' の起動に影響を及ぼします。この '/tmp' での問題は、手動メンテナンスが原因であると考えられます。

131207 21:15:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/libexec/mysqld: Can't create/write to file '/tmp/ib0h0Wt3' (Errcode: 13)
131207 21:15:47  InnoDB: Error: unable to create temporary file; errno: 13
131207 21:15:47 [ERROR] Plugin 'InnoDB' init function returned error.
131207 21:15:47 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131207 21:15:47 [Note] Event Scheduler: Loaded 0 events
131207 21:15:47 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.71'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution

mysqld の起動時に、/var/lib/mysql/mysql.sock を確立した後でクラッシュします。以前に発生した /tmp への書き込みエラーか、/var/lib/mysql/mysql.sock がクリーンアップされていないことが原因です。

/tmp のパーミッションの問題を解決した後で、CentOS を再起動すると、MySQL が正しく機能するようになります。

2. MySQL が正常にシャットダウンされない。

OS 再起動時に MySQL サービスが正しくシャットダウンされないと、古い /var/lib/mysql/mysql.sock が残ります。これにより、mysqld が起動しなくなります。ホスト CentOS 6.5 システムを再起動することによって、CentOS 6.5 KVM ゲスト仮想システムでこのエラーの再現に成功しました。CentOS はゲストシステムを正常にシャットダウンするべきですが、mysqld の場合に失敗するようです。

確認済みの Red Hat Linux 6.5 のバグ - https://bugzilla.redhat.com/show_bug.cgi?id=1037650

MySQL バグトラッカーでの問題についての議論 - http://bugs.mysql.com/bug.php?id=71086

この問題を再現する簡単な方法:

service mysqld start
killall -9 mysqld_safe mysqld
service mysqld start

注:バグリンクからパッチを手動で適用する必要はありません。修正されたパッケージはすでに配信されています。mysql-server パッケージのみ更新してください。

yum -y update mysql-server

3. SELinux ポリシー

'/var/log/mysqld.log' ログに、以下のようなエラーがあります。

mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
...
[Warning] Can't create test file /var/lib/mysql/boxy.lower-test
[Warning] Can't create test file /var/lib/mysql/boxy.lower-test
...
[ERROR] /usr/sbin/mysqld: Can't create/write to file 
    '/var/lib/mysql/boxy.pid' (Errcode: 13 - Permission denied)
[ERROR] Can't start server: can't create PID file: 
    Permission denied
mysqld_safe mysqld from pid file /var/lib/mysql/boxy.pid ended

'/var/lib/mysql' ディレクトリのパーミッションが正しいことが確実である場合、'/var/log/audit/audit.log' をチェックしてください。次のように、Selinux の問題を示すメッセージが含まれている可能性があります。

    ...
    type=AVC msg=audit(1363866652.030:24): avc:  denied  { write } for  pid=2119 
        comm="mysqld" name="/var/lib/myaql" dev=dm-0 ino=394 
        scontext=unconfined_u:system_r:mysqld_t:s0 
        tcontext=unconfined_u:object_r:default_t:s0 tclass=dir
    ...

新しいポリシーを適用するには、MySQL に対して '/var/lib/mysql' ディレクトリの使用を許可します。

semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"
restorecon -Rv /var/lib/myaql
    restorecon reset /var/lib/myaql context 
       unconfined_u:object_r:default_t:s0->unconfined_u:object_r:mysqld_db_t:s0
    restorecon reset /var/lib/myaql/mysql.sock context 
       system_u:object_r:mysqld_var_run_t:s0->system_u:object_r:mysqld_db_t:s0 

mysql サービスを起動するために、'/var/lib/mysql/mysql.sock' を削除してから mysql サービスを再び起動します。

  1. ソケットファイルを削除します。

    [root@server ~]# rm /var/lib/mysql/mysql.sock
    rm: remove socket `/var/lib/mysql/mysql.sock'? yes
    
  2. MySQL サービスを起動します。

    [root@server~]# service mysqld start
    Starting mysqld:                                           [  OK  ]
    

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article