16.04アップグレードによりmysql-serverが破損しました


127

私の全体的なアップグレードはうまくいきましたが、mysql-serverがそれ自体をインストールできないという非常に長引く問題が残っています。

これは、インストール/再インストールしようとしたときに表示されるエラーです。

Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                   Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

完全に削除しようとしましたが、依存関係のためにMariaDBをインストールしようとします(?)。これを修正するために私ができることについての提案は大歓迎です。

編集:私だけではないように見えますhttps : //bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279


私はここで同じ問題を抱えています
KernelPanic

1
phpmyadminをアンインストールする必要がありましたが、それが何らかの原因で依存関係の問題を引き起こしていました。再インストール後、すべてが再び正常に動作しています。
ヒンリッヒ

1
Ubuntu 14から16へのdo-release-upgradeは、MySQL 5.5から5.7へのサポートされていないアップグレードを実行するため、ここで報告されているように、MySQLはその後破損することが予想されます:bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/ +バグ/…
マルコマルサラ

1
@MarcoMarsala私は、Ubuntu 14から16へのアップグレード後にMySQLが破損することが予想されると言うことができるかどうかはわかりませんが、それはあなたの視点に依存すると思います。平均的なユーザーにとって、LTSアップグレードがMySQLのようなものを破壊することは確かに期待されていません。ただし、テスト中に検出されなかったことは驚くべきことです。
-TheGremlyn

MySQLを触れる必要なしに、上記の固定--reinstall aptのインストールphpMyAdminが後...フィギュア行く
アンディ・

回答:


119

@ andrew-beermanが投稿した指示は正しい軌道に乗っていますが、それは私にはあまり明確ではなく、必要以上に推奨するようです。上記の回答とバグスレッドの役立つ投稿をまとめました。

これらは私がこれを修正するために取ったステップです:

  1. バックアップしてmy.cnf file/etc/mysql削除または名前を変更します

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. /etc/mysql/mysql.conf.d/を使用してフォルダを削除します

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. my.cnf他の場所に保管されているファイル(ホームディレクトリで行った!)または/etc/alternatives/my.cnf使用中でないことを確認します。

    sudo find / -name my.cnf
    
  4. /etc/mysql/debian.cnfファイルのバックアップと削除(必要な場合はわかりませんが、念のため)

    sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
    sudo apt install mysql-server
    
  5. syslogに「mysqld: '/etc/mysql/conf.d/'のディレクトリを読み取れません」などのエラーが表示される場合は、シンボリックリンクを作成します。

    sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
    

    その後、サービスはで開始できるはずsudo service mysql startです。

それでうまくいきました!


17
これらのすべての操作の後(前にそれをやった)私はまだ同じエラーの問題を抱えています
セルジュ

5
/ etc / mysqlディレクトリからすべてのmy.cnf。*を削除する必要があります。my.cnf.backup、my.cnf.fallback、およびmy.cnf.migratedを探します-これらのファイルもすべて削除する必要があります(最初にバックアップしてください!)
hitzi

8
@SergiiP sudo find / -name "my.cnf"が役に立つかもしれません。
starbeamrainbowlabs

1
mysql-server-core-はmysql-server-core-5.7でなければなりません。それ以外の場合は魅力のように働いた。ありがとうございました!
デビッドテイ

1
+1。あなたのおかげで幸せになれた!朝夕も!私は立ち往生しました。
マックスユーディン

56

今日、同じ問題が発生しました。多くの解決策を試した後、問題はsudo systemctl disable mysql.serviceMySQLの自動起動を無効にするために使用したコマンドであることがわかったので、コマンドsudo systemctl enable mysql.serviceを使用してMySQLサーバーを再度有効にし、アップグレードプロセスを再度実行し、完全に終了しました。


5
私はこの同じ問題に出くわし、同じ修正がうまくいきました。
アレン

5
私のために働いた。ここですべての解決策を行いましたが、mysqlはこの解決策の後に働きました。
BłażejMichalik

6
ここでも同じ-これはトップポストでなければなりません。
a1phanumeric

3
私のためにも働いた!どうもありがとうございます。明確にするために、run:sudo systemctl enable mysql.serviceを実行し、その後runを実行しsudo apt install -fます。
フェルナンドパラディーニ

これが私がしなければならなかったすべてです。@narutoの説明のように、自動起動を無効にしました。自動起動を有効にして、「sudo apt upgrade」を実行しました。修正されました。一番の答えになるはずです。これは、はるかにシンプルで、より標準的で、トラブルが発生しにくいソリューションです。
ジャックホルト

20

エラーメッセージには次の行が含まれています。

subprocess installed post-installation script returned error exit status 1

ただし、これinstalled post-installation scriptは名前で言及されていません。何度もいじくり回した後、その名前が(私の場合)であることがわかりました/var/lib/dpkg/info/mysql-server-5.7.postinst

このファイルをsudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst、またはお好みのエディターで開きます。

上部で3行目(または)を変更します:set -eset -x、ファイルを保存します。(オプション-eは「エラー時に終了」で、-x「実行されたコマンドを明示的に表示」を意味します)

実行しますsudo dpkg --configure -a --log /tmp/dpkg.log (--logオプションはオプションです)。apt upgradeアップグレードされる唯一のパッケージであることがわかっている場合は、単に実行することもできます。

これで、mysql-server-5.7.postinstbashスクリプトの詳細な出力が得られ、何が問題なのかがわかります。

私の場合、それは(再)実行に失敗しましたmysql_upgradeが、カスタマイズされたmysqlインストールには必要ありませんでした。私がいたことを確認、私は成功し、前にそれを手動で実行した、とすべてが順調でした。

だから私は321行目をコメントアウトしました(古いmysqldリリースでは281行目を試します)。

#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?

そして、以前に失敗したsudo apt upgrade(再度実行する)コマンドが正常に終了し、dpkgがこのパッケージのエラーステータスを削除しました。

今、あなたは戻って設定することもできますset -xset -e(前述します)。オプションで、mysql-upgrade行のコメントを外します。

mysqlデータパーティションを非標準の場所に移動した場合は、追加の作業が必要になる場合があります。/var/lib/mysql/dataシンボリックリンク経由で別のドライブに移動しました。その後、postinstスクリプト操作の前に、シンボリックリンクを一時的に削除する必要がある場合があります。次に、パッケージのアップグレードを実行した後に再作成します。

mysqld debianパッケージの次のマイナーバージョンアップグレードの後、この/var/lib/dpkg/info/mysql-server-5.7.postinstスクリプトの問題が再び発生する可能性があります。


最終的にすべてをパージしてから、コミュニティmysql-serverバージョンをダウンロードし、ここから手動でインストールします:dev.mysql.com/downloads/mysql
RyanNerd

まったく同じことが私に起こり、あなたのステップはそれを解決しました。私のmysql_upgrade呼び出しは320行目でした。postinstスクリプトから呼び出されたときにゼロ以外の値を返す理由を説明できますか?
emiliopedrollo

@emiliopedrolloいいえ、ここでは説明できません。しかし、最近はパッケージメンテナーがポストインストールスクリプトを拡張したため、行番号は320になったと思います。先日、ソフトウェアアップデーター(新しいmysql-deb-packageを含む)の最後の実行中に同じことを確認しました。
knb

ありがとう!set -eMySQLがで指定されたUbuntuのシステム・ユーザーのアクセス権を持っていなかった-私は、正確な問題をうまくすることができました/etc/mysql/debian.cnf 。そこで、このユーザーをMySQLに追加し、特権を付与し、dpkg再度実行すると動作しました!
アレンハミルトン

17

ここの手順は私のサーバーで修正しました:https : //bugs.mysql.com/bug.php?id=72722

システムを一貫性のない状態にすることの苦痛は理解できますが、状況全体を心配せずに、システムをクリーンにするために段階的に実行してください。

まず、dpkg -l |を使用して、マシン上のすべてのmysqlパッケージの現在の状態を確認します。grep mysql(最後の列を除く出力を貼り付けてください)

最初の列は、パッケージの現在のステータスを示します。可能なオプションは次のとおりです。

ii)インストール済みrc)削除されたconfig-filesを保持(これは、/ etcの下のconfig-filesを削除しない「apt-get remove」で削除したすべてのパッケージの状態である必要があります)

これが機能するには、上記のリストにパッケージが表示されなくなるまで「apt-get purge <pkg-name>」を実行する必要があります。

python-mysql.connectorやpython-mysqldbなどの一部の非mysql-serverパッケージは、インストールされている場合、この状況に影響を与えないため削除する必要はありませんが、削除するとそれらを使用するアプリケーションに問題が発生する可能性があることに注意してください

私たちは間違いなくドキュメントを再訪問して、ユーザーがこのトラブルに巻き込まれないようにする方法を確認するようにします。詳細なフィードバックをお寄せいただきありがとうございます。


2
ありがとうdpkg -l | grep mysql 。方向を理解するのに役立ちました。
マックスユーディン

コマンドはパージのために間違っていたのでsudo apt-get purge <pkg-name>、編集で修正する必要がありますが、ユニコード文字を使用しました<。そうしないと表示されません。このコマンドを貼り付けるコピーに注意してください
Toskan

3

私の場合、straceで、/ var / run / mysqld /が存在せず、mysqldがファイルmysqld.sockを作成できないことがわかりました。

これらのコマンドは私の問題を解決しました:

mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld

今:

systemctl start mysql

そしてmysqlは再び動作します:)


25行目からこれらの行を/ usr / share / mysql / mysql-systemd-startに追加することをお勧めします。再起動するたびにこのディレクトリを再作成する必要はありません(このコメントでは行が返されないのでご注意ください) :if [!-d / run / msyqld]; その後、mkdir -p -m0755 / run / mysqld || {echo "/ run / mysqldを作成できません"; 出口1; } chown mysql:mysql / run / mysqld || {echo "/ run / mysqldをchownできません"; 出口1; } fi
scoobydoo

3

私の場合、追加することで問題を解決できました

# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,

/etc/apparmor.d/local/usr.sbin.mysqld

詳細については、stackoverflow での私の答え(Christophsによる)をご覧ください。


0

同じ問題がありました。mysqlを数回再インストールしようとしましたが、成功しませんでした。

私にとって問題は、別のmysqlプロセスがすでに実行されていることであることがわかりました。

詳細に:

を注意深く読んだ後/var/log/mysql/error.log、ログインして、次を見つけました:

[エラー]サーバーを起動できません:TCP / IPポートでバインド:アドレスは既に使用中です

[エラー]既に別のmysqldサーバーがポート3306で実行されていますか?

別のアプリケーションがすでにポートを使用しているようです。

私はそれを使用してチェックしましたps -aux | grep 3306

$ ps -aux | grep 3306
milkovs+  6802  0.0  0.0  16336  1084 pts/19   S+   21:39   0:00 grep --color=auto 3306
mysql    14706  0.0  0.3 1270192 13916 pts/2   Sl   Aug19   0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

そして、私は実行中のプロセスを殺しました sudo kill -15 14706

次に、mysqlを開始しました。 /etc/init.d/mysql start

最後に、mysqlが動作します!私はそれが誰かを助けることを願っています。


0

このページの回答はどれも役に立たなかった。

私はOracleのダウンロードページに行きmysql-apt-config_0.8.8-1_all.deb、OracleリポジトリからMySQLをダウンロードしてインストールしました:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server

2
isntall-> installタイプミス。愚かなSOでは、1文字修正することはできません。
チャバトス

mysqlをダウンロードするためにオラクルに行ったのはなぜですか
Sinscary

@Sinscaryこの答えはしばらく前のものですが、おそらくシステムパッケージマネージャーよりも新しいバージョンがあったからでしょうか?
オストロカッハ

0

いくつかのサーバーで問題が発生しました。修正はapt install phpmyadmin --reinstallを実行することでした。

上記を解決しました(後でmysqlに触れる必要はありません)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.