- ベストアンサー
起動シェルの置き場所によって起動しない理由
- 異なる場所に置かれた起動シェルは起動できない
- MySQLをRedHatLinux4.0にインストールしたが、起動できない
- 起動シェルの置き場所によって起動できない場合がある
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして。 RedHatは良くわからなくて申し訳ありませんが、 スクリプトをデバッグオプションで実行してみたらどうでしょうか? 恐らくBシェルでかかれていると思いますので、 # /bin/sh -x /etc/init.d/mysql start (パスは適宜換えてください) と実行してみてはどうですか? エラーが出てれば見てわかると思いますよ。 外していたらごめんなさい。
その他の回答 (2)
- linus21
- ベストアンサー率66% (8/12)
自己レスです;; 間違った事を書いていました。 質問者さんから反応が無かったので放置していました。 ごめんなさい。 > 恐らく、スクリプトファイルの内容は同じであっても、所有者が違ってなおかつスティッキービットと呼ばれるフラグが立っていたのかもしれません。 SUIDもしくはSGIDというフラグでした。 このフラグは、実行時にファイルの所有者権限で実行するものです。 お詫びして訂正します。
- linus21
- ベストアンサー率66% (8/12)
対処された内容を聞いて、思い当たったことがあります。 それは、スクリプトの所有者です。 削除されたとのことで、今となっては判らないような気がしますが、 恐らく、スクリプトファイルの内容は同じであっても、所有者が違ってなおかつスティッキービットと呼ばれるフラグが立っていたのかもしれません。 それを確認するには、コマンドラインから # ls -l と実行すれば違いが判ります。(削除されたので今は判りませんが) /usr/share/mysql/mysql.server ⇒ MySQLの実行を許可されたユーザ /etc/init.d/mysql ⇒ MySQLの実行を許可されていないユーザ だったのでは無いかと思われます。 許可されていないユーザーでMySQLを実行しようとしてエラーになったのではないでしょうか。 そして、一方を削除してコピーするということは、同じファイル属性のコピーを作る事なので、そのスクリプトファイルでも実行が許可されるようになったと思われます。 もっと詳しく情報を求めていたら、判ったのですが・・・申し訳ありません。 ちなみに、恐らく今のMySQLはroot権限で動いているのではないかと推察しますが、外部公開していたらセキュリティホールになり、かなり危ないと思います。 ローカルで構築している分には気にすることは無いでしょう。 あくまでも推測ですので、間違っていたらご容赦ください。
お礼
犯人は、SELinuxでした。 SELinuxを無効とすることで無事起動しました。 ありがとうございます。
お礼
回答ありがとうございます。 シェルのデバッグをする方法があるとは知りませんでした。 早速比較したところ、原因まではわからなかった為、 原因は不明ですが、下記手順を行った所、 /etc/配下でも起動させることができました(汗) ファイルIDを変えるという裏技でした。 OSはLinuxですが、こんなこともあるのですね。 # cp /etc/init.d/mysql /tmp/mysql # rm /etc/init.d/mysql # cp /tmp/mysql /etc/init.d/mysql # /etc/init.d/mysql start