私の全体的なアップグレードはうまくいきましたが、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
@ andrew-beermanが投稿した指示は正しい軌道に乗っていますが、それは私には明確ではなく、必要以上のものを推奨しているようです。上記の回答とバグスレッドの役立つ投稿をまとめました。
これらは私がこれを修正するために取ったステップです:
my.cnf file
の/etc/mysql
をバックアップし、削除または名前を変更します
Sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
を使用してフォルダー/etc/mysql/mysql.conf.d/
を削除します
Sudo rm -r /etc/mysql/mysql.conf.d/
my.cnf
ファイルが他の場所に格納されていないことを確認します(ホームディレクトリで実行しました!)または/etc/alternatives/my.cnf
use
Sudo find / -name my.cnf
/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
Syslogに「mysqld: '/etc/mysql/conf.d/'のディレクトリを読み取れません」などのエラーが表示される場合は、シンボリックリンクを作成します。
Sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
その後、サービスはSudo service mysql start
で開始できるはずです。
それでうまくいきました!
今日、私は同じ問題を手に入れました。多くの解決策を試した後、問題はMySQL自動起動を無効にするために使用したコマンドSudo systemctl disable mysql.service
であることがわかったので、それを動作させるにはコマンドSudo systemctl enable mysql.service
、アップグレードプロセスを再度実行すると、完全に終了しました。
エラーメッセージには次の行が含まれています。
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 -e
をset -x
に変更して、ファイルを保存します。 (オプション-e
は「エラー時に終了」、-x
は「実行されたコマンドを明示的に表示」を意味します。おそらく)
Sudo dpkg --configure -a --log /tmp/dpkg.log
を実行します(--logオプションはオプションです)。アップグレードされる唯一のパッケージであることがわかっている場合は、apt upgrade
を実行することもできます。
これで、mysql-server-5.7.postinst
bashスクリプトの詳細な出力が得られ、何が問題なのかがわかります。
私の場合mysql_upgrade
の(再)実行に失敗しましたが、カスタマイズしたmysqlインストールには必要ありませんでした。私はsureを手動で実行したことがありますが、成功し、すべて順調でした。
だから私は321行目をコメントアウトしました(古いmysqldリリースでは281行目を試してください)、
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
以前に失敗したコマンドSudo apt upgrade
(もう一度実行)が正常に終了し、dpkgはこのパッケージのエラーステータスを削除しました。
これで、set -x
をset -e
に戻すことができます(上記を参照)。オプションで、mysql-upgrade行のコメントを外します。
Mysqlデータパーティションを非標準の場所に移動した場合は、追加の作業が必要になる場合があります。私は/var/lib/mysql/data
からシンボリックリンクを介して別のドライブに移動しました。その後、postinst
スクリプト操作の前に、シンボリックリンクを一時的に削除する必要がある場合があります。次に、パッケージのアップグレードを実行した後に再作成します。
Mysqld debianパッケージの次のマイナーバージョンアップグレードの後、/var/lib/dpkg/info/mysql-server-5.7.postinst
スクリプトに関するこの問題が再び発生する可能性があります。
ここの指示は私のサーバーでそれを修正しました: 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パッケージは、インストールされている場合、この状況に影響を与えないため削除する必要はありませんが、削除するとそれらを使用するアプリケーションに問題が発生する可能性があることに注意してください.
私たちは間違いなくドキュメントを再訪問して、ユーザーがこのトラブルに巻き込まれないようにする方法を確認するようにします。詳細なフィードバックをお寄せいただきありがとうございます。
私の場合、追加することで問題を解決できました
# 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での私の answer (by ChristophS)をご覧ください。
私の場合、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は再び動作します:)
このページの答えはどれも役に立たなかった。
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
同じ問題がありました。 mysqlを数回再インストールしようとしましたが、成功しませんでした。
私にとって問題は、別のmysqlプロセスがすでに実行されていることであることがわかりました。
詳細:
/var/log/mysql/error.log
のログを注意深く読んだところ、次のことがわかりました。
[エラー]サーバーを起動できません:TCP/IPポートでバインド:アドレスは既に使用中です
[エラー]ポート3306で別のmysqldサーバーが既に実行されていますか?
別のアプリケーションがすでにポートを使用しているようです。
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が動作します!私はそれが誰かを助けることを願っています。
いくつかのサーバーで問題が発生しました。修正はapt install phpmyadmin --reinstallを実行することでした。
上記を解決しました(後でmysqlに触れる必要はありません)