Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What is going on with this article?
@shimacpyon

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

More than 3 years have 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 が実行されてファイルが作られてしまうがために「起きた問題」のエラーが発生した

参考資料

23
Help us understand the problem. What is going on with this article?
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
shimacpyon
しまぴょんです。主に C++/Qt について書いています。
dwango
Born in the net, Connected by the net.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
23
Help us understand the problem. What is going on with this article?