Help us understand the problem. What is going on with this article?

MySQL 5.7 on CentOS7 で起動時にこける問題

More than 1 year has passed since last update.

起きた問題

MySQL の起動に失敗する

$ sudo systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

$ sudo journalctl -b | tail -n 100 | grep ERROR
# 以下のエラーメッセージがみつかる
# [ERROR] --initialize specified but the data directory has files in it. Aborting.

data ディレクトリにファイルがあって失敗してることがわかる(本来は空っぽの状態から実行されている必要がある)

結論

以下の形で MySQL 起動前に初期化を明示的に行う (--initialize は後述の理由で起動に失敗する)

mysqld --initialize-insecure

何が起きてたのか

  • MySQL 5.7.6 から従前の mysqld_install_db から mysqld --initialize に変更された
    • もうひとつのオプションとして mysqld --initialize-insecure が存在する
  • CentOS7 では systemd を経由し起動前に起動前初期化スクリプト /usr/bin/mysqld_pre_systemd を実行する
    • そのスクリプトは datadirmysql ディレクトリがない場合 mysqld --initialize を直指定して実行するもの
    • mysql ディレクトリは MySQL 自体の情報を格納する重要なデータベースだからであろう
  • mysqld --initialize だと証明書関連のファイル *.pem が作られてしまうためディレクトリが空の状態にならず起動に失敗する
  • つまり起動前に mysqld --initialize が実行されてファイルが作られてしまうがために「起きた問題」のエラーが発生した

参考資料

shimacpyon
しまぴょんです。主に C++/Qt について書いています。
http://blog.hikarin.jp
dwango
Born in the net, Connected by the net.
https://dwango.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした