11
12

More than 5 years have passed since last update.

[MySQL][ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!と言われた時の行動

Last updated at Posted at 2019-04-15

概要

レンタルしているサーバーがメンテナンスされることになったため、サーバーを一時停止。
メンテナンス後、サーバーを起動したらなぜかMySQLが起動していない・・・
ログを見てみても、一時停止まではログに記載されていて、それからの再開処理はどこにも書かれてない・・・
とりあえず直接コマンドをたたいて(sudo mysqld)みたところ、以下のことを言われます。

[ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!

というわけで、開始です。

なお手元の環境は
CentOS 6
MySQL 5.7

になっております。

そもそもこのエラーって何よ

[ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!

雑に翻訳すると「mysqldをrootで動かしたかったらマニュアルの「Security」を読んでね!」とのこと。
そういうわけで読みに行きます。
6.1.5 How to Run MySQL as a Normal User

再び雑に翻訳すると「rootユーザーでの実行は禁止! そのかわりrootでもmy.cnfに書くか、--user={user_name}に一般ユーザーを指定するとそのユーザーを使って起動するよ!」と書いてあります。
いちいち設定するのも面倒なので、my.cnfに書きに行きましょう。
すでにmysqlというユーザーがサーバー内に存在することを確認後、以下を追記します。

[mysqld]
...(いろいろ書いてある)
user=mysql

というわけでもう一度sudo mysqld。少なくともSecurityについては言われなくなるかと思われます。

余談:ところで何が問題だったの?

さて、それではと勇んでservice mysqld start を行ったところ、やっぱり起動しない…
ログを見てみたところ、ログにも何も書き込まれていない…
ふと、思い立ってログの権限を確認してみたところ、なんとroot
というわけで、chown mysql:mysql mysql.logを実行。そうしてもう一度実行したところ、今度はログが記載されました。

can't create/write to mysql.pid

pidってのが触れないようです。
もしや・・・と疑いながら今度はpidに対してchown mysql:mysql mysql.pid
実行後serviceから起動したら、mysqldが正常に起動されました。

そしてその後、 /etc/init.d/mysqld を確認したら、開始ユーザーにもきちんと --user=mysql の記載が。

どうもmysql5.7、導入方法によっては初回起動がrootでされてしまい、そのままrootユーザーとして各種ファイルを作りながら実行成功してしまうようです。
そして再起動したときに改めてmysqlユーザーで起動し、各種ファイルにパーミッションエラーで弾かれる、と。あほの子かな?

そんなわけで、よくわからないエラーは解決しました。
とりあえず、logのパーミッションを疑うところから始めよう!という教訓でした。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12