web-dev-qa-db-ja.com

FedoraでMysql / Mariadbを起動できませんでした

fedora 17でmysqlを開始できませんでした。以下のコマンドを実行するためにrootアカウントを使用していますが、selinuxが無効になっています。

service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 11:29:32 SGT; 10s ago
  Process: 4251 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 4250 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 4222 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 4250 (code=exited, status=1/FAILURE)

Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Running position recovery with --log_error='/var/...er.pid'
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 Acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 Acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 11:29:32 Acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

journalctl -xn
-- Logs begin at Sat 2014-04-26 15:18:22 SGT, end at Tue 2014-09-23 11:29:34 SGT. --
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 Acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 Acer-4930g systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mariadb.service has failed.
-- 
-- The result is failed.
Sep 23 11:29:32 Acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Sep 23 11:29:34 Acer-4930g PackageKit[4204]: daemon quit

getenforce 
Permissive

次に、mariadbログファイルの所有権をrootからmysqlに変更しましたが、それでも失敗しました。

[root@Acer-4930g ~]# ls -ld /var/log/mariadb/
drwxr-x---. 2 mysql mysql 4096 Sep 23 11:02 /var/log/mariadb/
[root@Acer-4930g ~]# ls -l /var/log/mariadb/mariadb.log 
-rw-rw----. 1 root root 554 Sep 23 11:02 /var/log/mariadb/mariadb.log
[root@Acer-4930g ~]# chown -R mysql:mysql /var/log/mariadb -chR
[root@Acer-4930g ~]# systemctl restart mariadb.service 
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

[root@Acer-4930g ~]# systemctl status mariadb.service 
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 14:58:09 SGT; 3min 4s ago
  Process: 6890 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 6889 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 6861 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 6889 (code=exited, status=1/FAILURE)

Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.
Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aria engine is not enabled or did not start. The Aria engine...-tables
Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aborting
Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:08  InnoDB: Starting shutdown...
Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:09  InnoDB: Shutdown completed; log sequence number 1597945
Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:09 [Note] /usr/libexec/mysqld: Shutdown complete'
Sep 23 14:58:09 Acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 14:58:09 Acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 14:58:09 Acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 14:58:09 Acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
3
Xianlin

許可?

コマンドservice mysqld startを表示していますが、その前にSudoを付けていますか? Qに含めた出力でこれらの「アクセス許可拒否メッセージ」を取得しているという事実に基づいて、このサービスを開始するアクセス許可がないと思います。

Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 Acer-4930g mysqld_safe[4250]: ''

実際にSudoを使用している場合は、上記のログメッセージで言及されているディレクトリとファイルに注意を向けます。このディレクトリ/ファイルに注目:

$ ls -ld /var/log/mariadb
$ ls -l /var/log/mariadb/mariadb.log

このAskFedora Q&Aというタイトルのこれらのコマンドを見つけました: mariadbサービスが開始しません:権限が拒否されました 、これで問題が解決するはずです:

$ Sudo chown mysql:mysql /var/log/mariadb -chR

に続く:

$ Sudo systemctl restart mariadb.service && \
    Sudo systemctl status mariadb.service

MariaDBログファイルでは、ユーザー、mysqlへのアクセスが許可されていないようです。上記のコマンドでこの問題を解決できます。

DBが壊れていますか?

それでも問題が解決せず、次のようなエラーが発生した場合:

Sep 23 14:58:09 Acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.

次のようなメッセージのMariaDBログファイルで、上記の権限の問題が解決されたことを確認することもできます。

Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
FATAL ERROR: Upgrade failed

どちらのメッセージも基本的に、MySQL DBをMaria DBにアップグレードするときに問題があったことを通知しています。何も気にしないDBの場合は、単に移動または削除できます。これには、まずMariaDBパッケージを削除してから、再インストールする必要があります。

$ Sudo yum remove mariadb-server

### To remove
$ Sudo rm -rf /usr/lib/mysql

### To move
$ Sudo mv /usr/lib/mysql /usr/lib/mysql.orig

$ Sudo yum install mariadb-server

注:上記のヒントのソース: mariadbサービスの開始に関する問題

上記のヒントで確認できないのは、移動/削除するディレクトリが/usr/lib/mysqlであるかどうかです。または/var/lib/mysql。それがそのヒントのタイプミスかどうかはわかりません。だから私は最初に/usr/lib/mysqlで上記を行い、それがうまくいかない場合は/var/lib/mysqlで手順を繰り返します。最初にremoveメソッドを使用し、問題がなければ、戻って壊れたディレクトリを削除します。

注:/var/lib/mysqlはDBファイルが存在する場所であり、/usr/lib/mysqlディレクトリはさまざまなプラグインが存在する場所です。

2
slm