web-dev-qa-db-ja.com

「mysqlメインプロセスの生成に失敗しました:実行できません:そのようなファイルまたはディレクトリはありません」

私はMySQLの初心者なので、我慢してください。

11.10から12.04へのアップグレードが完了しました。

すべてが問題なく機能しているようで、私のソフトウェアと設定はすべて正常に機能しています。 MySQLとは別に。

私が試みるとき:

Sudo start mysql

エラーが表示されます:

start: Job failed to start

問題の原因をどこで診断できますか?そして(うまくいけば)-それを整理する方法は?

(アドバイスに従う自動開始を無効にしました here それが重要な場合)


更新1:

以下の両方の出力:

cat /var/log/mysql.err 
cat /var/log/mysql.log

空です。

dmesg | grep mysqlの出力:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

アップデート2:

以下のAWinterで示されているように、MySQLはアップグレード後に自動的に消え、再インストールする必要があったようです。

56
radek

Mysql-server-5.1パッケージがアンインストールされたことを確認してください。アップグレード後も保持される可能性があります。同じエラーが発生し、MySQLサーバー5.1および5.5をパージしてから再インストールする必要がありました。

安全のために、最初に/ var/lib/mysql /ディレクトリのバックアップを作成します。

Sudo cp -R /var/lib/mysql/ ~/mysql

次にMySQLをパージします(これにより、php5-mysqlとphpmyadminおよび他の多くのライブラリが削除されるため、この後にいくつかのアイテムを再インストールする準備をしてください。

Sudo apt-get purge mysql-server-5.1 mysql-common

フォルダー/ etc/mysql /を削除し、その内容を削除します

Sudo rm /etc/mysql/ -R

次に、古いデータベースファイルがまだ/ var/lib/mysql /にあることを確認します。そうでない場合は、フォルダーにコピーして、root:rootをchownします。

(ファイルがもう存在しない場合にのみこれらを実行します)

Sudo mkdir /var/lib/mysql/
Sudo chown root:root /var/lib/mysql/ -R
Sudo cd ~/mysql/
Sudo cp * /var/lib/mysql/ -R

次にmysqlサーバーをインストールする

Sudo apt-get install mysql-server

最後に、phpmyadminやphp5-mysqlなどの不足しているパッケージを再インストールします。

48
AWinter
Sudo dpkg-reconfigure mysql-server-5.5
15
Kevin C. Smith

私はこれと同じ問題を抱えていましたが、私にとっては、InnoDBログファイルはmysqlが予期していたものとは異なるサイズであり、アップグレード中に静かに失敗しました。

12.04へのアップグレードで消去されたカスタム構成ファイルがあり、ログファイルのサイズをデフォルト構成以外のものに設定しました。

ファイルを削除する必要があります:/ var/lib/mysql/ib_logfile *

ファイルが削除されると、mysqlはデフォルトサイズの新しいログファイルを開始および作成できるようになります。

12
Corey Aufang

ほとんどのエラーは、サーバーを詳細な非デーモンモードで起動し、出力を監視することで表示されます。

Sudo mysqld --verbose
9
Ian Mackinnon

私は同じ問題を抱えていましたが、上記の答えはどれも私を助けませんでした。そのため、最終的な希望として、ディスク領域を解放しようとしました。/var/logから不要なログファイルを削除するだけで、2.5Gのスペースが解放されました。その後、MySQLは正常に起動しました。

7
Eye

これは時々起こります。mysqlが起動しなくなる可能性のあるいくつかの異なる問題がありますが、私が知っている最も一般的な問題のいくつかをここに記述します。

注-最も一般的な問題を説明するため、すでにmysqlサービスを削除およびインストールしようとしているか、単にmysqlサービスを再インストールしようとしていると仮定しています。

インストールする-Sudo apt-get install mysql-server mysql-client
削除するには-Sudo apt-get remove mysql-server mysql-client
パージ(ファイルの削除+構成)-Sudo apt-get purge mysql-server mysql-client
再インストールするには-Sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnffileはデフォルトのディレクトリにありません。 (デフォルトで)/etc/my.cnfまたは/etc/mysql/my.cnfのいずれかに配置する必要があります。

  2. Mysqlデータファイルが置かれているハードドライブに十分なスペースがありません。データベースが大きくなりすぎてハードドライブを100%使用すると、サービスは失敗します。

  3. アップグレード後、my.cnfファイルが正しい場所にあることを確認してください。アップグレード方法またはアップグレード元のバージョンに応じて、前述のように/etc/my.cnfまたは/etc/mysql/my.cnfになります。また、ファイルにはmysql.confだけでなくmy.cnfという名前を付けることもできます。これは、バイナリをmysql.comからダウンロードした場合に発生します。

  4. dmesgを実行すると、mysqlサービスがエラーメッセージとしてスローされるのを確認できます。ロードエラーが発生するためです。また、なぜこれが起こっているのかも言っているかもしれません。端末でdmesgと入力すると、世界が表示されます。必要なのはmysqlに関する情報なので、次のようにします。dmesg | grep mysqlこれにより、mysqlを含む行がスローされます。

  5. my.cnfまたはmysql.confファイルが正しいことを確認してください。 12.04ではMySQLはバージョン5.5、11.10ではバージョン5.1です。 confファイルにいくつかの変更があるかもしれません(Havenは実際にはチェックしていません)。

  6. ソケットの問題に関連するエラーは通常、間違った場所を指しているmy.cnfまたはmysql.confファイルの障害であり、通常は次のように表示されます。

    ソケット「/var/run/mysqld/mysqld.sock」を介してローカルMySQLサーバーに接続できません

    この問題の他の原因は、システム上の実際のmysqlに必要なスクリプトよりも古いスクリプトを使用している可能性があるため、/etc/init.dmysqlファイルに関連しています。正しく更新されていない可能性があり、構成ファイルなどを上書きしていませんでした。そのため、この2つのファイルのいずれかを編集し、それらが他の場所を指しているかどうかを確認してから、Sudo service mysql restartを実行して機能するかどうかを確認します。

  7. Mysqlのエラー固有の出力をよりよく見るには、次のようにします。

    cat /var/log/mysql.err-mysqlエラーを表示します。 lesscatの出力をスクロールするのに役立つので、たまたま通過する情報が多すぎる場合は、cat /var/log/mysql.err | lessのようにします。

    同じことがcat /var/log/mysql.logにも当てはまります。エラーが表示された場合は、質問に入力するか、コメントを入力することで、より迅速に回答できます。

  8. 接続の問題と実際に実行されているサービスに苦しんでいる場合は、サーバーのファイアウォールが3306ポート(着信接続)を介した接続を許可しているかどうかを確認してください。その後、ルーター(該当する場合)がポート3306をブロックしていないかどうかを確認します。基本的にネットワークテストを実行して、mysqlに割り当てられたポートに関連する問題の発生元を確認します。

すべてが正常な場合、mysqlサービスが実行されているかどうかをテストするには、タイプservice mysql status

最後の手段として。 mysqlを実行しているのにログインできない場合は、次を試してください。

  1. MySQLサーバーを停止します。

    Sudo /etc/init.d/mysql stopまたはSudo service mysql stop

  2. 手動設定でmysqldサービスを手動で開始します

    Sudo mysqld --skip-grant-tables &

    (&を追加することを忘れないでください。別のターミナルを開く必要があります。&はプロセスをバックグラウンドに送信し、同じターミナルを使用して強制終了できます)。

  3. ROOTとしてmysqlデータベースにログインします

    mysql -u root mysql

  4. MyPASSWORDを新しいパスワードに置き換えて次を入力します

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

これでMysqlサービスにrootとして再度ログインするのに十分なはずです。それが役に立てば幸い。

5
Luis Alvarado

Ubuntu Server 12.04 LTSにアップグレードした後、同じ問題が発生しました

Sudo apt-get install mysql-server 

それは修正するのに十分でしたが、spotwebの古いデータベースについて文句を言いました。 spotwebを削除して修正しました。

Sudo apt-get purge spotweb

mysqlの再構成:

Sudo dpkg-reconfigure mysql-server-5.5
4
RedPixel

誰かが同様の問題に直面する場合に備えて、これを追加します。すべてのアンインストールと再インストールを試みましたが、役に立ちませんでした。ソリューションを見つけるための鍵は、upstartがエラーログをこのフォルダーに配置することでした

/ var/log/upstart /

mysqlの

/ var/log/upstart/mysql.log

私が開いたとき、それはこのメッセージを持っていました

15行目の/etc/apparmor.d/tunables/globalの/etc/apparmor.d/usr.sbin.mysqldのAppArmorパーサーエラー:「tunables/home」を開けませんでした

/ etc/apparmor.d/tunables /フォルダーを見ると、その中にホームファイルがありませんでした。

/etc/apparmor.d/tunables/homeを編集し、これらのコメントされていない行がある別のコンピューターから内容をコピーしました

@ {HOME} = @ {HOMEDIRS}/*// root /

@ {HOMEDIRS} =/home /

ここで誰かが同様の問題に直面しています

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/9823

その後、私はサービスを再起動することができました

4
pt123

私の場合、ここでのいくつかの答えよりもずっと簡単でした。 launchpadに関連するバグ が見つかりました。修正はコメント9に記載されているとおりです。

Sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
Sudo service apparmor restart
2
Manfred Moser

アップグレード後、mysql-server/mysql-server-5.5がインストールされておらず、5.1もインストールされていないことがわかりました。 my.cnfの名前をmy.cnf_oldに変更し、mysql-servenをインストールしようとしました。インストール中に、ルートパスワードを設定できなかったというエラーメッセージがありました。この後、設定、apparmorなどを確認しました。すべてが大丈夫のようでした。私の次の試みはmysql-serverを再構成することでしたが、パッケージが完全にインストールされていないと不平を言いました。だから私はアンインストールすることにし、このapt-getの間にパッケージを修正し、今は動作しています。何も変えなかったので、なぜかわかりません。

1
user54914

私の場合、Ubuntu 12.04の新規インストールにMySQLをインストールしようとしましたが、「root」ユーザーのパスワード設定でエラーが発生した理由がわかりませんでした。上記のすべてのソリューションを試しましたが、何もしません。

その後、すべてをパージ/削除することにし、MySQLサーバーをアンインストールし、そのすべてのフォルダー(/ etc/mysql /および/ var/lib/mysql /)を削除しました。最終的には、再インストールすると、パスワードを設定してサーバーインスタンスを起動できました。

1
Alexian

私は同様の問題を抱えていましたが、すぐに防具まで追跡されました。以前にこの問題を教えてくれたことを思い出しました。

これらの設定を変更し、システムがapparmorを使用している場合、/ etc/apparmor.d/usr.sbin.mysqldも調整する必要がある場合があります。例えば。これらの行が追加されました(my.cnfへのシンボリックリンクを許可し、おそらくシンボリックリンクされたファイルを読み取れるようにするため):

/ usr/sbin/mysqld {... /etc/mysql/*.cnf lr、/path/to/symlinked/my.cnf r、...}

1
Simon Nuttall

ターミナルで再度インストールし、my.cnfを実行させることができます:

Sudo apt-get install mysql-server-5.1
Sudo apt-get --reconfigure mysql-server-5.1
Sudo apt-get update
Sudo start mysql my.cnf

このように動作する可能性があります。

0
Michael

performance_schema[mysqld]の下に/etc/mysql/my.confを追加すると、このエラーが発生するという問題があります。その行を削除し、mysqlを再起動できました。

編集:ramの1ギガバイトだけでは、performance_schemaを有効にしてmysqldを起動するには不十分です。私は3つのギグにぶつかりましたが、うまくいきました。

0
ThorSummoner